在 mosh 中运行启动命令

在 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 类似的行为?

答案1

这种方式几乎不可能,因为 MOSH 本身已经在运行一些命令来在远程服务器上启动其进程。而且按照你的写法,它被解释为服务器名称,这当然是不正确的。

阅读手册页时mosh(1)(下次开始搜索的好方法),您可以简单地将命令指定为下一个参数:

mosh [options] [--] [user@]host [command...]

所以

$ mosh elisa2 'cat blah'

只需完成工作即可(您不需要关心ttyMOSH)。

通常,您还想运行 shell,因此在 之后cat应该还有,bash这样您就会得到提示:

$ mosh elisa2 "cat blah;bash"

答案2

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'

相关内容