Plink funktioniert nicht mit Befehlsdateien für Git in sudo

Plink funktioniert nicht mit Befehlsdateien für Git in sudo

Ich verwende plink.exe zur Automatisierung von Git-Befehlen und das funktioniert gut. Aber ich muss dies mit Servern mit Sudo-Login verwenden

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

meine commands.txt Datei zum Beispiel:

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

und die Ausgabe sieht aus, als wäre man angemeldet, aber Git wird ausgeführt, als würde es ohne Sudo-Anmeldung funktionieren:

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

Mit Hilfe von putty.exe funktioniert gut

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

Antwort1

Der Befehl sudo -S -iliest das Passwort und die Befehle von der Standardeingabe.

Die echo -e "MYPASSWORD\n" | sudo -S -iStandardeingabe erfolgt über die Pipe, die eine neue Zeile zurückgibt und dann das Dateiende anzeigt, nachdem das Kennwort gelesen wurde: Die restlichen Befehle werden in der normalen Shell ausgeführt.

Es gibt ein paar Möglichkeiten: Was dem, was Sie codiert haben, am nächsten kommt, ist die Verwendung eineshier-Dokument:-

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

Alternativ können Sie alle Befehle zum Eingabestream hinzufügen: -

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

Beachten Sie, dass ich dies auf einer normalen Shell getestet habe bash, da ich kein Setup habe, mit dem ich problemlos testen kann plink.

verwandte Informationen