Plink funktioniert nicht mit der Befehlsdatei für git in sudo

276
Eugen Gedroyc

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

plink.exe -ssh argentium@186.118.154.164 -m commands.txt 

Meine Befehlsdatei.txt zum Beispiel:

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

und die Ausgabe sieht aus wie angemeldet, aber git führt aus, als würde es ohne Login von sudo funktionieren:

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

Mit Hilfe 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'. 
1

1 Antwort auf die Frage

1
AFH

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

Bei der echo -e "MYPASSWORD\n" | sudo -S -iStandardeingabe wird aus der Pipe eine neue Zeile zurückgegeben. Anschließend wird das Dateiende nach dem Lesen des Kennworts zurückgegeben: Die restlichen Befehle werden in der normalen Shell ausgeführt.

Es gibt verschiedene Wege: Was am nächsten kommt, ist die Verwendung eines Here-Dokuments : -

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

Alternativ können Sie alle Befehle zum Eingabestrom 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 bashShell getestet habe, da ich kein Setup habe, mit dem ich problemlos testen kann plink.

Die alternative Variante ist offensichtlich. Ich hätte ahnen können ... Jetzt verstehe ich den Sinn. Aber die erste Variante ist bequem. Vielen Dank! Eugen Gedroyc vor 4 Jahren 0