Manchmal ist es schwer nach etwas zu suchen. Mein Problem ist, dass ich einen entfernten Rechner gerne über ssh steuern würde.
Ich habe mir dazu ein Bash Skript geschrieben, das drei Modi kennt on/off/down. Folgende Befehle werden dann ausgeführt:
1 2 3 4 5 6 7 8 9 | function up(){ wakeonlan $MAC; } function off(){ ssh ${USER}@${SERVER} sudo /sbin/shutdown -h now; } function down(){ ssh ${USER}@${SERVER} sudo /usr/sbin/pm-hibernate; } |
Das funktoniert an sich auch (falls jemand über diesen Thread stolpert, es funktoniert nur, wenn shutdown und hibernate vom Benutzer ohne Passwort ausgeführt werden darf - muss also per visudo bearbeitet sein).
Nur der Aufruf von down() funktioniert nicht schön. Der Rechner fährt zwar runter und läßt sich auch wieder aufwecken, aber auf dem client bleibt der Aufruf "stecken" und erzeugt einen Timeout. Der Prompt wird also erst nach ca. 60 Sekunden angezeigt (der ssh timeout) verbunden mit der Meldung "Write failed: Broken pipe", die eben von diesem timeout kommt.
Meine Frage, warum wird bei dem Aufruf von off() dieser Timeout nicht erzeugt und wie kann diesen beim Aufruf von down() verhindern?