LINUX.ORG.RU
решено ФорумAdmin

запуск скрипта в screen по ssh

 , , ,


0

1

Добрый всем.

Нужно запускать виртуальную машину на удаленном хосте в headless режиме. Каждый раз все делать руками лень, поэтому накостылял такое:

на удаленном хосте лежит скрипт, вида:

#!/bin/bash
screen -dmS virtualbox bash -c 'VBoxHeadless -s LiveDVD'

Этот скрипт хочу запускать по ssh. Для этого тоже накостылял скрипт:

#!/bin/bash
ssh -t [alias for ssh host] bin/startvm.sh
ssh -N -L 9400:localhost:9400 [alias for ssh host]

И далее уже посредством rdesktop соединяюсь с запущенной виртуалкой.

И вот вроде бы все по отдельности работает. А иногда (не уловил условия) и скриптами запускается и соединяется. Но в основном обламываюсь подключиться rdesktop'ом по причине:

There is a screen on:
        2175.virtualbox (Dead ???)
Remove dead screens with 'screen -wipe'.
There is no screen to be resumed.

Короче, почему-то умирает сессия в screen, а вместе с ней и стартанувшая виртуалка.

Из-за чего это может быть?

★★★★★

Ответ на: комментарий от deadNightTiger

Изначально собирался. Но без последнего из твоей цепочки. Однако в openSUSE у всего этого какие-то идиотские зависимости (тут и GTK3 и даже парочка тем значков) и никто это исправлять не будет все равно. А самому тянуть для себя одного мне не уперлось. У коробки зависимости минимальны для headless варианта.

Да и дело-то не в коробке. Не она же заваливается, а именно screen.

tmux не пробовал, как-то уже по-старинке со screen.

gutaper ★★★★★
() автор топика
Ответ на: комментарий от anc

Может я конечно чего-то не догоняю, но зачем вам screen

Может и я туплю. Если запускать просто как

ssh -t [ssh host] "VBoxHeadless -s VM"

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

А если я выключу локальную машину, то и виртуалка отрубится по-идее. Потому и в screen ее.

gutaper ★★★★★
() автор топика
Ответ на: комментарий от xaizek

Не, везде пусто на этот счет. ни в dmesg, ни в journalctl по grep screen ничего не выдает

gutaper ★★★★★
() автор топика

А если запускать виртуалку и делать туннель отдельно, то сейчас сработало и сессия screen осталась detach, а не умерла. Не, знаю, связано ли как-то это с тем, что после выполнения скрипта по ssh, подключение закрывается (и пишет об этом). А если ставить последовательно в одном скрипте (как в посте изначально писал), то про закрытие первого соединения не пишет.

gutaper ★★★★★
() автор топика

В общем, добавил sleep 5 между запуском скрипта и созданием тоннеля, чтобы успевало закрыться первое соединение и все стало нормально.

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

А если я выключу локальную машину, то и виртуалка отрубится по-идее. Потому и в screen ее.

screen нужен, чтобы программам, оставшимся работать оставался терминал, для ввода/вывода. Если у вас последнего вообще нет, то для таких задач изначально был придуман man nohup

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

Что-то man у него не сильно жирный-то.

nohup VBoxHeadless -s VM

и он так же висит и не отдает шел. По ctrl+c убивается и виртуалка.

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

Что-то man у него не сильно жирный-то. и он так же висит и не отдает шел.

Вот видите, маленький, а не прочитали. Конечно не отдаёт, там же не сказано, что в фон уходит, там сказано, что не убъётся, если сессия прервётся. Потому и запускайте в фон руками.

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

Локально работает. Через ssh почему-то нет. Разбираться лень, так как уже есть работающий вариант.

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