Plink não funciona com arquivo de comandos para git no sudo

Plink não funciona com arquivo de comandos para git no sudo

Eu uso plink.exe para automatizar comandos git e isso funciona bem. Mas preciso usar isso com servidores com login do sudo

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

meu arquivo command.txt, por exemplo:

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

e a saída parece estar logada, mas o git é executado como se funcionasse sem o login do sudo:

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

Com ajuda putty.exe funciona bem

с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'.

Responder1

O comando sudo -S -ilê a senha e os comandos da entrada padrão.

Na echo -e "MYPASSWORD\n" | sudo -S -ientrada padrão é do pipe, que retorna uma nova linha e, em seguida, um fim de arquivo após a leitura da senha: os comandos restantes são executados no shell normal.

Existem algumas maneiras de contornar: o que está mais próximo do que você codificou é usar umaqui-documento:-

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

Alternativamente, você pode adicionar todos os comandos ao fluxo de entrada: –

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

Observe que testei isso em um bashshell normal, pois não tenho uma configuração onde possa testar facilmente com o plink.

informação relacionada