Plink no funciona con el archivo de comandos para git en sudo

Plink no funciona con el archivo de comandos para git en sudo

Utilizo plink.exe para automatizar los comandos de git y funciona bien. Pero necesito usar esto con servidores con inicio de sesión de sudo

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

mi archivo commands.txt, por ejemplo:

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

y la salida parece haber iniciado sesión, pero git se ejecuta como si funcionara sin iniciar sesión en sudo:

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

Con ayuda putty.exe funciona bien

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

Respuesta1

El comando sudo -S -ilee la contraseña y los comandos de la entrada estándar.

En echo -e "MYPASSWORD\n" | sudo -S -ila entrada estándar, la entrada es desde la tubería, que devuelve una nueva línea y luego un final de archivo después de leer la contraseña: los comandos restantes se ejecutan en el shell normal.

Hay un par de formas de solucionarlo: lo que se acerque más a lo que ha codificado es utilizar unaqui-documento:-

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

Alternativamente, puede agregar todos los comandos al flujo de entrada: –

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

Tenga en cuenta que he probado esto en un bashshell normal, ya que no tengo una configuración con la que pueda probar fácilmente plink.

información relacionada