如果我已经将公钥放到远程主机上.所以没有密码输入问题.
我想登录远程机器并screen -r 立即执行.有没有办法实现这个目标?
例如:
ssh example.com ; screen -r
Run Code Online (Sandbox Code Playgroud)
但这是错误的,因为screen -r不会发送到远程主机.
在远程主机上运行命令时,默认情况下ssh不会分配伪终端.如果在远程主机上运行屏幕等交互式程序,则必须具有伪终端.该-t选项可以实现这一目标.尝试:
ssh -t example.com "screen -r"
Run Code Online (Sandbox Code Playgroud)
从示例中删除分号:
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)