Dies liegt wahrscheinlich daran, dass PATH
... Sie den vollständigen Pfad zu psshutdown
oder angeben date
.
Die SSH-Sitzung ohne Shell oder PTY hat höchstwahrscheinlich eine sehr grundlegende PATH
Einstellung ...
Ich erstelle zwei Bash-Skripts auf meinem Raspberry Pi, auf dem die standardmäßige Debian-basierte Linux-Distribution ausgeführt wird: eines zum Abschalten meines Desktop-Computers und eines zum Herunterfahren.
Das Skript zum Herunterfahren des Computers funktioniert einwandfrei und der Inhalt ist:
sshpass -p "MYPASSWORD" ssh administrator@MYCOMPUTERNAME "shutdown /s"
Auf meinem Desktop wird Windows 10 und der integrierte SSH-Server von Windows 10 ausgeführt.
Wenn ich versuche, das Skript auszuführen, um meinen Computer in den Ruhezustand zu versetzen, wird mir jedoch die Ausgabe angezeigt:
Packet integrity error (165 bytes remaining) at ../channels.c:2401 Disconnecting: Packet integrity error.
Der Inhalt dieses Skripts ist:
sshpass -p "MYPASSWORD" ssh administrator@MYCOMPUTERNAME "psshutdown /d"
"psshutdown" bezieht sich auf das Windows Sysinternals-Dienstprogramm .
Seltsamerweise führt das Ausführen des Befehls psshutdown /d
über eine Administrator-Eingabeaufforderung, wenn er sich auf meinem Desktop befindet, meinen Computer erfolgreich aus. Es funktioniert auch, wenn ich mich vom SS aus mit dem SSH verbinde, ohne einen Befehl anzugeben, der einmal ausgeführt werden soll, dh sshpass -p "MYPASSWORD" ssh administrator@MYCOMPUTERNAME
den psshutdown /d
Befehl auszuführen . Das Ausführen des gleichen Befehls wie im Skript direkt in Bash schlägt mit derselben Ausgabe wie oben fehl.
Interessanterweise werden einige Befehle ausgeführt und andere werfen einen anderen Fehler aus, wenn Sie versuchen, andere Befehle auf dieselbe Weise wie im Sleep-Skript auszuführen. Funktioniert beispielsweise sshpass -p "MYPASSWORD" ssh administrator@MYCOMPUTERNAME "whoami"
einwandfrei und gibt die korrekte Ausgabe zurück, sshpass -p "MYPASSWORD" ssh administrator@MYCOMPUTERNAME "date"
erzeugt jedoch die Ausgabeexec request failed on channel 0
Was bewirkt, dass das Sleep-Skript fehlschlägt, und wie kann ich das Problem beheben, um den Befehl erfolgreich über SSH auszuführen?
Hinweis: Ich verstehe, dass es nicht ideal ist, das SSH-Kennwort in Klartext in einer Skriptdatei zu speichern. Die Einrichtung der schlüsselbasierten Authentifizierung auf dem integrierten SSH-Server ist jedoch eine Herausforderung für einen anderen Tag.
Dies liegt wahrscheinlich daran, dass PATH
... Sie den vollständigen Pfad zu psshutdown
oder angeben date
.
Die SSH-Sitzung ohne Shell oder PTY hat höchstwahrscheinlich eine sehr grundlegende PATH
Einstellung ...