如果我在远程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 *
答案 0 :(得分:1)
发生这种情况是因为命令hostname
在本地计算机上运行。您需要将整个命令传递给引号,例如:
ssh account@remote.server.address.com "w -uh | awk -v hostname=\$(hostname) '{print \"On \"hostname ,\$1,\"is connected with IP: \"\$3}'"