В своем комментарии к ответу fons вы говорите, что он не работает при использовании screen
.
Не могли бы вы уточнить это? Глядя на исходный код openssh, sshd выполняет команду, вызывая
YOUR_DEFAULT_SHELL -c COMMAND
Так, например, если вашей оболочкой по умолчанию является screen
, то это не сработает, так как флаг screen
-c
просто переопределяет его .scrreenrc
. Таким образом, на самом деле нет способа отправить команды на экран, если это ваша оболочка по умолчанию. Вы фактически должны запустить screen как команду, данную ssh, но с оболочкой по умолчанию, которая не является screen .
Если это то, что вы пытаетесь сделать, я думаю, что все будет действительно странно, так как screen
также закроет окна с неинтерактивными программами, поэтому вам придется сделать аналогичный трюк с фонами, но на один уровень глубже. ТАК, с, например, /bin /bash (а не screen) в качестве оболочки по умолчанию Что-то вроде:
ssh user@host -t 'screen bash -l -c "ls;bash"'
Который должен - сделать глубокий вдох - ssh в хост, запустить bash -c командой screen, которая откроет новое окно. Если бы это окно только открылось до ls, оно бы закончилось, и экран закрылся бы, поэтому мы используем трюк с фонсами в новом окне экрана.
Я думаю, что это сработает, если это даже то, что вы пытались сделать;)