LINUX.ORG.RU
ФорумAdmin

Можно ли продолжить выполнение скрипта на удаленной машине по ssh

 ,


1

1

Логика такая, скрипт отрабатывает некоторые действия на локальной машине и после того должен подключиться к удаленке по ssh, запросить у меня пароль и продолжить отрабатывать действия на удаленной машине. Пока не придумал ничего дучше как разделить локальный и удаленный скрипты.

★★★★★

запускать в tmux? если критично, чтобы скрипт работал только во время сессии, то ставьте скрипт на паузу ctrl + s перед отключением, и когда подключились снимайте с паузы ctrl + q. если делать это скриптами из консоли, то посылайте сигнал kill -s SIGCONT, kill -s SIGSTOP

Spoofing ★★★★★ ()

Можно ли продолжить ...

Нет.

Следующий!

anonymous ()

ой я дурак, не так понял вопрос.

Spoofing ★★★★★ ()

Можно передать удалённому шеллу скрипт на stdin.

iliyap ★★★★★ ()

А в чём именно проблема? Если комманда не одна, и скрипт не будет особо меняться, то его удалённую часть можно сразу залить на удалёнку. Ну а выполнять через shh user@hostname command из основного скрипта. Собственно, результат именно тот, который требуется, насколько я понял.

Если вдруг это делается просто чтобы обрабатывать что-то одновременно на двух машинах, то лучше не изобретать велосипед, а воспользоваться gnu parallel.

Psych218 ★★★★★ ()
Ответ на: комментарий от Spoofing

то ставьте скрипт на паузу ctrl + s перед отключением

Ctrl+S не ставит скрипт на паузу, а приостанавливает только вывод. Путаешь с Ctrl+Z.

Kroz ★★★★★ ()

Если скрипт должен уметь продолжать работу после обрыва ssh сессии (случайного или специального), то только разделение на 2 части + nohup (чтобы при logout не отваливался); ну, или tmux/screen. Если такого требования нет - через ssh как писали выше.

Kroz ★★★★★ ()
Ответ на: комментарий от Spoofing

Да, ты ему вывод остановил и он встал на паузу. Но из первого далеко не во всех случаях следует второе.

while true; do true; done
попробуй.

t184256 ★★★★★ ()
Ответ на: комментарий от Spoofing

А теперь попробуй то же с

$ while true; do echo 111 >/dev/null; done

Ctrl+S останавливает вывод. AFAIK, если процессу таки нужно выводить, то вывод идет в какой-то буффер, который, как я понял, небольшой; когда тот заполняется - только тогда процесс останавливается.

Для именно остановки/продолжения процесса правильно использовать Ctrl+Z и fg/bg.

Kroz ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.