Назад | Перейти на главную страницу

Как я могу запустить сеанс экрана с помощью команды по ssh на удаленном сервере со своего рабочего стола?

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

Итак, очевидное

ssh root@my.machine screen "tail -f /var/log/messages"

(как пример) не работает и дает

Must be connected to a terminal.

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

Попробуйте использовать параметр -t для ssh

ssh -t root@my.machine screen "tail -f /var/log/messages"

От человека 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.

Ты можешь использовать:

ssh root@host screen -m -d "tail -f /var/log/messages"

Это запускает отдельный экран с запущенной на нем командой.

   -m   causes screen  to  ignore  the  $STY  environment  variable.  With
        "screen  -m"  creation  of  a  new session is enforced, regardless
        whether screen is called from within  another  screen  session  or
        not.  This  flag has a special meaning in connection with the `-d'
        option:

   -d -m   Start screen in "detached" mode. This creates a new session but
           doesn't  attach  to  it.  This  is  useful  for  system startup
           scripts.

Поздний ответ, но это то, что я делаю, я создаю псевдоним (назовем его t), который делает это:

ssh $MYSERVER -a -x -t screen -xRR -A -e^Zz -U -O

Это говорит ssh для отключения агента и пересылки X11 и сообщает screen чтобы подключиться к запущенному сеансу, при необходимости начать новый, использовать ^Z в качестве команды прорыва используйте UTF-8 и внимательно относитесь к терминалу.

Все это означает, что я могу открыть терминал, набрав t и он откроет мой сеанс экрана на $ MYSERVER. Затем я могу открыть другой терминал, сделать то же самое и получить другое окно с тем же сеансом.

Действительно приятно иметь несколько окон терминала для одного сеанса экрана, чтобы вы могли одновременно просматривать две вкладки экрана.

Помещая следующее в файл ~ / .bashrc на моем сервере, он запускает сеанс экрана при первом входе на сервер или, если он уже запущен, повторно подключает меня к этому сеансу.

Мне это очень удобно:

if [ -n "$SSH_CONNECTION" ] && [ -z "$SCREEN_EXIST" ]; then
    export SCREEN_EXIST=1
    screen -DRi
fi