如何ssh到远程主机并立即执行命令

hey*_*ike 6 linux

如果我已经将公钥放到远程主机上.所以没有密码输入问题.

我想登录远程机器并screen -r 立即执行.有没有办法实现这个目标?

例如:

ssh example.com ;  screen -r 
Run Code Online (Sandbox Code Playgroud)

但这是错误的,因为screen -r不会发送到远程主机.

amc*_*abb 9

在远程主机上运行命令时,默认情况下ssh不会分配伪终端.如果在远程主机上运行屏幕等交互式程序,则必须具有伪终端.该-t选项可以实现这一目标.尝试:

ssh -t example.com "screen -r"
Run Code Online (Sandbox Code Playgroud)


Per*_*ion 8

从示例中删除分号:

ssh example.com "screen -r"
Run Code Online (Sandbox Code Playgroud)

但是,您不会为该特定命令获得更多带宽,因为它需要一个连接的终端才能成功执行.


*编辑1*

要运行多个命令,只需将它们用分号分隔在一起:

ssh example.com "screen -r; ls -al; ps -elfc"
Run Code Online (Sandbox Code Playgroud)

*编辑2*

仍然不完全确定你想要完成什么(screen -r只是一个例子,或者你真的想把一堆命令连在一起?).无论如何,我正在修改我的答案以涵盖更多可能性:

将随机命令链接在一起:

ssh example.com "ps -elfc; ls"
Run Code Online (Sandbox Code Playgroud)

在运行屏幕后运行一些随机命令:

ssh -t example.com "screen -r; ls"
Run Code Online (Sandbox Code Playgroud)

要专门运行屏幕并向其发送命令:

ssh -t example.com "screen -r -X ls"
Run Code Online (Sandbox Code Playgroud)