
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 -i
liest das Passwort und die Befehle von der Standardeingabe.
Die echo -e "MYPASSWORD\n" | sudo -S -i
Standardeingabe 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
.