将远程服务器的主机名添加到格式化的ssh命令响应中

时间:2018-10-23 11:27:28

标签: awk ssh hostname

如果我在远程REHL服务器上直接(通过ssh终端)运行此命令: w -uh | awk -vhostname="$(hostname)" '{print "On "hostname ,$1,"is connected with IP: "$3}'

我得到这样的输出:

  

在remote.server1.address.com上,帐户名已通过IP连接:8.8.8.8

但是,如果我通过脚本中的SSH命令远程运行此命令(以检查多个服务器): ssh account@remote.server.address.com w -uh | awk -vhostname="$(hostname)" '{print "On "hostname ,$1,"is connected with IP: "$3}'

命令的结果为本地计算机提供主机名,而不是远程服务器:

  

在local.machine.address.com上,帐户名已通过IP连接:8.8.8.8

     

在local.machine.address.com上,帐户名通过IP连接:0.0.0.0

     

在local.machine.address.com上,帐户名已连接IP:255.255.255.255 *

我正在寻找如下结果。

  

在remote.server1.address.com上,帐户名已通过IP连接:8.8.8.8

     

在remote.server2.address.com上,帐户名已通过IP连接:0.0.0.0

     

在remote.server3.address.com上,帐户名已连接IP:255.255.255.255 *

1 个答案:

答案 0 :(得分:1)

发生这种情况是因为命令hostname在本地计算机上运行。您需要将整个命令传递给引号,例如:

ssh account@remote.server.address.com "w -uh | awk -v hostname=\$(hostname) '{print \"On \"hostname ,\$1,\"is connected with IP: \"\$3}'"