
Beim Versuch, mich mit Plink bei einem Server anzumelden, weiß ich nicht, wie ich das Sudo-Passwort im Befehl richtig übergebe.
Ich verwende so etwas:
plink -ssh -t <user>@<server> -pw <password> "echo -e <password>\n | sudo -S docker ... | cd <some path>"
Das Passwort enthält zwei Sonderzeichen – ein „;“ und ein „*“. Zunächst muss das „;“-Zeichen mit einem „^“ maskiert werden, damit eine Verbindung hergestellt werden kann. Dann muss ich im Befehl zu sudo wechseln, um einen Docker-Befehl zu verwenden. Normalerweise sollte das Passwort von der Konsole übernommen werden. Aber irgendwie scheint es, dass dort ein anderes Maskieren erforderlich ist. Ich habe einige Dinge ausprobiert und zweitens einfache Anführungszeichen um das Passwort hinzugefügt, es mit und mit dem Zeilenumbruch hinter dem Passwort versucht, aber nichts davon hat funktioniert. Weiß jemand, wie es funktioniert?
Ein Beispielkennwort lautet beispielsweise: abc123;*
Wenn ich diesen Text in der Bat-Datei verwende:
SET password=abc123;*
plink -ssh -t <username>@<server> -pw abc123^;* "echo -e %password%\n | sudo -S docker exec -i <docker_container> <docker_container_path> |pwd"
Ich würde erwarten, dass sich der Benutzer nach diesem Code im Docker-Container befindet und ein Tomcat-Pfad angezeigt wird. Stattdessen wird das aktuelle Verzeichnis nach der Verbindung angezeigt und darunter stehen diese Zeilen:
[sudo] password for <user>: Sorry, try again
[sudo] password for <user>:
sudo: 1 incorrect password attempt
Ich habe verschiedene Ansätze ausprobiert, um das Passwort für den Plink-Befehl zu umgehen, wie:
SET password=abc123\;\*
oder
SET password=abc123%%3B%%2A
oderSET password=abc123^;*
aber nichts davon hat funktioniert.
Hinweis: Leider ist das Ändern des Benutzerkennworts oder das Einstellen des Linux-Servers auf „kein Kennwort“ keine Option.