Plink 不適用於 sudo 中 git 的命令文件

Plink 不適用於 sudo 中 git 的命令文件

我使用 plink.exe 來自動化 git 指令,效果很好。但我需要將其與透過 sudo 登入的伺服器一起使用

plink.exe -ssh [email protected] -m commands.txt

我的commands.txt 檔案例如:

echo -e "MYPASSWORD\n" | sudo -S -i
cd /home/www/argentium.ru
git checkout HEAD~3

輸出看起來像是已登錄,但 git 的執行就像沒有登入 sudo 一樣運作:

[sudo] password for argentium: fatal: Unable to create '/home/www/argentium.ru/.git/index.lock': Permission denied

在幫助下 putty.exe 工作正常

сentos-7-x86_64-minimal @ 23.11.2016
-bash-4.2$ sudo -i
[sudo] password for argentium:
[root@stilnoeserebro ~]# cd /home/www/argentium.ru
[root@stilnoeserebro argentium.ru]# git checkout HEAD~3
Note: checking out 'HEAD~3'.

答案1

此命令sudo -S -i從標準輸入讀取密碼和命令。

標準echo -e "MYPASSWORD\n" | sudo -S -i輸入來自管道,在讀取密碼後返回換行符,然後返回檔案結尾:其餘命令在普通 shell 中運行。

有幾種方法:最接近您編碼的內容是使用此處文件:-

sudo -S -i <<EOF
MYPASSWORD
cd /home/www/argentium.ru
git checkout HEAD~3
EOF

或者,您可以將所有命令新增至輸入流:-

echo -e "MYPASSWORD\ncd /home/www/argentium.ru\ngit checkout HEAD~3" | sudo -S -i

請注意,我已經在普通bashshell 上對此進行了測試,因為我沒有可以輕鬆使用plink.

相關內容