
Ich muss mich täglich beim Remote-Server anmelden und dieselben Aufgaben ausführen. Ich verwende eine Windows-Plattform und der Remote-Server ist Unix. Ich verwende PuTTY, um mich beim Remote-Server anzumelden. Um die manuelle Arbeit zu reduzieren, muss ich diese Aufgabe automatisieren.
Ich habe diesen Code ausprobiert:
start putty.exe -ssh -load session -l username -pw password -m command.txt -t
Das command.txt
enthält:
sudo su - user1
ls
cd directory
Nur der erste Befehl command.txt
funktioniert und dann erwartet PuTTY eine Eingabe vom Benutzer.
Ich muss alle Befehle ohne Benutzereingabe ausführen können.
Dinge, die wichtig sind:
Ich bin kein Root-Benutzer
Zugriff auf den Wechsel zu den
user1
ohne PasswortIch bin darauf beschränkt, nur PuTTY zu verwenden (die Installation von Plink ist nicht zulässig)
Antwort1
Da die darin enthaltenen Befehle command.txt
ausgeführt werden voneine Master-ShellEiner nach dem anderen.
Die Master-Shell führt also den aus sudo
, wartet, bis er beendet wird, bevor sie mit den anderen Befehlen ( ls
und cd
) fortfährt. Und der sudo
wird nicht beendet (zumindest nicht von selbst).
Während Sie möchten, dass ls
und cd
innerhalb ausgeführt werdeneine Kinderschaleausgeführt durch su
.
Sie müssen ihm sagen, su
dass er die Befehle ausführen soll.
Das sollte funktionieren:
sudo su - -c "ls ; cd directory" user1
oder dieses
echo "ls; cd directory" | sudo su - user1
Ich gehe allerdings davon aus, dass Sie tatsächlich in der Shell weiterarbeiten möchten. Das obige wird jedoch beendet, sobald die Befehle ausgeführt werden.
Sie möchten also der Befehlsliste eine Shell hinzufügen:
sudo su - -c "ls ; cd directory ; /bin/bash" user1
oder
echo "ls ; cd directory ; /bin/bash" | sudo su - user1