Запустите команду запуска в mosh
Я хотел бы запустить команду запуска после входа через mosh
, С ssh
Я бы сделал это так:
ssh server -t 'some startup command'
Но когда я делаю подобное в mosh, я получаю:
$ mosh elisa2 --ssh="ssh -t 'cat blah'"
Pseudo-terminal will not be allocated because stdin is not a terminal.
/usr/bin/mosh: Could not resolve hostname cat
ssh_exchange_identification: Connection closed by remote host
/usr/bin/mosh: Did not find remote IP address (is SSH ProxyCommand disabled?).
Как добиться в mosh такого же поведения, как в ssh?
2 ответа
Это, скорее всего, невозможно, поскольку сам MOSH уже запускает какую-то команду для запуска своего процесса на удаленном сервере. Также, как вы написали это, оно интерпретируется как имя сервера, что, безусловно, не правильно.
Как читая страницу руководства mosh(1)
(хороший способ начать поиск в следующий раз), вы можете указать команду просто как следующий аргумент:
mosh [options] [--] [user@]host [command...]
следовательно
$ mosh elisa2 'cat blah'
следует просто на работу (вам не нужно заботиться о tty
в МОСХ).
Как правило, вы хотите запустить также оболочку, поэтому после cat
, там должен быть bash
тоже, так что вы получите приглашение:
$ mosh elisa2 "cat blah;bash"
mosh elisa2 -- cat blah
Использовать--
чтобы предотвратить попытку mosh проанализировать команду как флаги опций. Затем он передаст все, что будет после этого, как команду для запуска при входе в систему.
Однако приведенная выше команда не запускает интерактивный сеанс. Команда запустится, а затем mosh завершит работу.
Чтобы подключиться к эмулятору терминала, как обычно при использовании SSH:
ssh user@host -t 'tmux attach || tmux new'
mosh user@host -- 'tmux attach || tmux new'
ssh user@host -t 'screen -R'
mosh user@host -- 'screen -R'