Plink wechselt den Benutzer nicht mit dem Befehl su

1

Ich verbinde mich wie folgt über einen Link mit einem Server:

plink -ssh -l username -pw password example.host.com -m C:\Putty\input.txt > C:\Putty\output.txt

input.txt enthält

whoami
su - newsuser
whoami

output.txt enthält

username
username

SU funktioniert nicht über die Verbindung.

Wenn Sie den gleichen Befehl in putty versuchen, funktioniert er einwandfrei und es wird die Ausgabe "newsuser" ausgegeben .

Linux PuTTY - su für passwortbezogene Probleme automatisieren

Ich habe die obige Lösung ausprobiert, aber sie funktioniert bei mir nicht.

Vielen Dank

Gopi Krishnan
quelle

Antworten:

2

Erstens funktioniert es nicht so, wie Sie denken.

Die Befehle im Skript werden nacheinander ausgeführt. Der su(hatte es geschafft) würde eine interaktive Shell-Sitzung ausführen und auf Benutzereingaben (Befehle) warten. Erst wenn das suexistiert, whoamiläuft das zweite (wird angezeigt username).


Jedenfalls sufunktioniert dein ja nicht.

Zuerst gibt der susicher eine Fehlermeldung aus. Was ist das? Sie erfassen nur eine Standardausgabe in Ihren Befehlen. Erfassen Sie auch eine Fehlerausgabe ( 2>&1). Dies schlägt höchstwahrscheinlich fehl, da sumöglicherweise ein interaktives Terminal erforderlich ist, während Plink with -mswitch standardmäßig ein nicht interaktives Terminal verwendet. Das Hinzufügen eines -tSchalters hilft in diesem Fall.


Beachten Sie, dass die Automatisierung suim Allgemeinen eine schlechte Idee ist. Wenn Sie einige Befehle ausführen müssen, für die Root-Berechtigungen erforderlich sind, empfiehlt es sich, den Befehlen in der sudoersDatei einen dedizierten privaten Schlüssel zuzuordnen. Und dann verwenden Sie einen sudoprivaten Schlüssel im Plink.

Martin Prikryl
quelle
Wenn ich -t benutze, fehlt die Datei input.txt. Ich habe es mit vollem Pfad versucht \, \\, aber immer noch derselbe Fehler
Gopi Krishnan
Es sieht so aus, als hätten Sie -tstattdessen verwendet -m. Sie müssen beide verwenden. Lesen Sie die Dokumentation!
Martin Prikryl