Я настроил свой .screen rc для создания 10 окон при создании сеанса экрана как

 screen -t task1      0
 screen -t task2      1
 screen -t task3      2
 .
 .

То, что я хочу, это когда я создаю сеанс экрана, каждое окно должно быть ssh на машине. Я пробовал разные вещи, как

 screen -t task1      0 "ssh -p 22 root@x.x.x.x"

 screen -t task1      0 bash "ssh -p 22 root@x.x.x.x"

Но это не похоже на работу.

1 ответ1

2

Ваша проблема заключается в цитировании.

screen -t task1 1 "ssh foo@bar"
screen -t task2 2 bash "ssh foo@bar"

Первая строка будет пытаться выполнить команду с именем « ssh foo@bar » вместо того, чтобы разбивать ее на слова; попробуй без кавычек.

Во второй строке команда bash будет выполнять скрипт с именем « ssh foo@bar » вместо того, чтобы анализировать его как команду; для этого нужен флаг -c :

screen -t task1 1 ssh foo@bar
screen -t task2 2 bash -c "ssh foo@bar"

Чтобы точно узнать, что происходит, вставьте команды из своего экрана в интерактивный сеанс. Предполагая, что ваш командный символ используется по умолчанию, попробуйте ^a: чтобы получить эквивалент командной строки экрана.

^a:screen -t task1 2 "ssh foo@bar"

.. должен дать вам сообщение об ошибке
Cannot exec 'ssh foo@bar': No such file or directory

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .