2014-12-11 5 views
1

Я использую tmux на скачке. Я пытаюсь автоматизировать некоторые общие сценарии. Как я могу сделать следующее ?:tmux new-window ssh на удаленный хост, затем выполните команду и оставайтесь на связи

  1. создать новое окно
  2. SSH на удаленный хост
  3. выполнять некоторые команды на удаленном хосте (например: CD и точка-слэш-то)
  4. Оставаться в системе

я могу сделать это с SSH:

ssh -t [email protected] "cd ~adarias/duncans/ServiceAgent/tests; bash -l -c 'mocha config_tests.js'; bash -l" 

, но не с tmux нового-окна:

tmux new-window -t mosdev -d -n 'debug & test' 'ssh -T [email protected] < .mosdev/scripts/test_config.sh; bash -l' 

Я поставил команды оболочки в виде отдельного файла, потому что у меня были проблемы с вложенными цитаты, которые я не мог понять, как работать вокруг.

.mosdev/скрипты/test_config.sh:

#!/bin/bash 
cd ~adarias/duncans/ServiceAgent/tests; bash -l -c 'mocha config_tests.js'; bash -l 

SSH-сессия на удаленный хост не остается открытой. Несмотря на то, что новое окно делает, я возвращаюсь обратно в подсказке в окне перехода.

Итак, что мне здесь не хватает? Как я могу заставить эту сессию оставаться открытой?

ответ

2

Я считаю, что проблема заключается в использовании команды ssh.

С конца секции AUTHENTICATION в man ssh:

Сессия заканчивается, когда команда или оболочка на выходах удаленных машин и все Х11 и соединений TCP были закрыты.

Поэтому я думаю, что то, что вы видите, - это ожидаемое поведение ssh.

В качестве временного решения, попробуйте использовать tmux send-keys сказать окно для входа в систему и затем выполнить скрипт:

tmux new-window -a -d -t mosdev -n debug-test 
tmux send-keys -t mosdev:debug-test "ssh [email protected]" C-m 
tmux send-keys -t mosdev:debug-test "cd ~adarias/duncans/ServiceAgent/tests; mocha config_tests.js" C-m 

Пара примечаний:

  • Я изменил имя окна что-то не пространства.
  • C-m - это ключ возврата.

Я заметил, что во время моего ответа на вопрос два месяца. Вы уже решили это? Если да, то как вы?