выполните команду из txt файла

Все сеансы будут останавливаться, как только будет получена сигнализация с помощью SIGHUP. (Если предположить, что вы ничего не сделали, чтобы предотвратить обработку этого сигнала).
Для этого нет таймаута, только минимальная задержка, так как сигнал вызывает остановку процесса, что приводит к появлению следующего SIGHUP и т.д.

0
17.08.2014, 22:04
2 ответа

Вы выполняете команду ssh root@server1.com, которая читает команды со стандартного входа и выполняет их на server1.com. Стандартный вход подключается к вашему входному файлу, поэтому на server1.com вы выполняете команду ssh root@server2.com.

Если Вы хотите выполнить команду ls, Вам необходимо каким-то образом работать ls в Вашем коде. Есть два здравомыслящих варианта:

  • Если Вы хотите выполнять произвольные команды, поместите все команды в Ваш входной файл:

    ssh root@server1.com ls.
    root@server2.com ls
    

    Тогда ваш входной файл - это скрипт оболочки, просто выполните его с помощью sh myscript, или сделайте его исполняемым и поместите #!/bin/sh сверху.

  • Если вы хотите выполнить одну и ту же команду на нескольких машинах, сделайте так, чтобы входной файл содержал только имена машин, т.е.

    root@server1.com.
    root@server2.com
    

    Затем прочитайте названия машин и выполните команду по каждому:

    , одновременно читая целевой комментарий; сделайте.
     шш "$target" ls 

    Переадресация с /dev/null происходит в том случае, если удаленная команда может попытаться прочитать стандартный вход, чтобы избежать чтения из файла со списком имен машин. Файл со списком может содержать другие слова в каждой строке после имени сервера; они будут вставлены в переменную /комментарий. Войдите в привычку заключать двойные кавычки вокруг подстановок переменных.

    Для выполнения одной и той же команды на нескольких машинах лучше воспользоваться фреймворками .

1
28.01.2020, 02:28

Добавьте опцию -t для команды ssh в ваш файл:

ssh -t root@server1.com
ssh -t root@server2.com
etc....

из man ssh:

-t      Force pseudo-tty allocation.  This can be used to execute arbi‐
        trary screen-based programs on a remote machine, which can be
        very useful, e.g. when implementing menu services.  Multiple -t
        options force tty allocation, even if ssh has no local tty.

Если ошибка все еще происходит, добавляя еще одну опцию -t, что-то вроде:

ssh -t -t root@server1.com
2
28.01.2020, 02:28

Теги

Похожие вопросы