博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SSH远程命令

Posted on 2018-11-30 17:48  bw_0927  阅读(143)  评论(0)    收藏  举报

https://www.cnblogs.com/sparkdev/p/6842805.html

 

 

远程执行命令

在远程的主机上执行 df 命令,然后直接把结果显示出来。整个过程就像是在本地执行了一条命令一样:

$ ssh nick@xxx.xxx.xxx.xxx "df -h"

一次执行多条命令呢?其实也很简单,使用分号把不同的命令隔起来就 OK 了:

$ ssh nick@xxx.xxx.xxx.xxx "pwd; cat hello.txt"

执行需要交互的命令

默认情况下,当你执行不带命令的 ssh 连接时,会为你分配一个 TTY。因为此时你应该是想要运行一个 shell 会话。

例如:

for host in ${agents[*]}
do
    echo $host
    ssh root@$host 
done

此时终端会保持打开状态

 

  


但是当你通过 ssh 在远程主机上执行命令时,并不会为这个远程会话分配 TTY。此时 ssh 会立即退出远程主机,所以需要交互的命令也随之结束。
好在我们可以通过 -t 参数显式的告诉 ssh,我们需要一个 TTY 远程 shell 进行交互!
添加 -t 参数后,ssh 会保持登录状态,直到你退出需要交互的命令

 

for host in ${agents[*]}
do
    echo $host
    ssh -t root@$host "cd /data/tmp; ps -ef; top"
done

但此时最后一个命令必须要是使用终端的命令,例如top, vim之类,否则还是会退出终端的。