Как отключить удаленный сервер через ssh, не получив сообщение об ошибке «сломанный канал»? - PullRequest
0 голосов
/ 13 февраля 2019

Мне нужно перезагрузить удаленный сервер через ssh в скрипте и получить код выхода 0.

У меня все настроено на использование ключей вместо пароля;так что я могу войти удаленно.Проблема в том, что когда я отправляю команду shutdown -r, ssh сообщит о сломанном канале.

Я пытался использовать -oConnectTimeout=1 и -oTCPKeepAlive=no.Я также попытался отложить завершение работы с помощью shutdown -r -t 30, но, похоже, оно не работает.

ssh thor@$hammer_time -oBatchMode=yes "sync; sync; shutdown -r"

В данный момент скрипт будет зависать в течение минуты и сообщать о ненулевом статусе выхода: broken pipe что и следовало ожидать, так как сервер только что перезагрузился.Как получить ssh для входа в систему и выхода с кодом завершения перезагрузки после отправки команды перезагрузки, не получив сообщение об ошибке сломанного канала?

1 Ответ

0 голосов
/ 13 февраля 2019

Я думаю, что правильный путь - перезапуск машины ... флаг "-h" просто выключит его.

sudo shutnow -r now

Если зависание проблематично, следующееможет работать,

nohup sudo shutdown -r now

Вы приказываете заданию запускаться в фоновом режиме после отключения

gnome-session-quit --power-off
gnome-session-quit --reboot --force

Для пользователей Linux

...