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

相关内容