Führen Sie Befehle mit sudo auf dem Remote-Server aus, nachdem Sie sich über eine Batchdatei bei PuTTY angemeldet haben

Führen Sie Befehle mit sudo auf dem Remote-Server aus, nachdem Sie sich über eine Batchdatei bei PuTTY angemeldet haben

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.txtenthält:

sudo su - user1 
ls 
cd directory

Nur der erste Befehl command.txtfunktioniert 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 user1ohne Passwort

  • Ich bin darauf beschränkt, nur PuTTY zu verwenden (die Installation von Plink ist nicht zulässig)

Antwort1

Da die darin enthaltenen Befehle command.txtausgefü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 ( lsund cd) fortfährt. Und der sudowird nicht beendet (zumindest nicht von selbst).

Während Sie möchten, dass lsund cdinnerhalb ausgeführt werdeneine Kinderschaleausgeführt durch su.

Sie müssen ihm sagen, sudass 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

verwandte Informationen