我想写一个shell脚本来做以下四件事:
ssh远程机器(比如hosti)
将机器名称打印到文件(top_out)
将'top'命令输出的前几行打印到与step2相同的文件中
对另一台机器重复1-3
我试过这个:
#! /bin/bash for i in 1 2 3 4 5 6 7 8 do echo "host$i" >> ~/mysh/top_out ssh host$i "top -n1 -b | head -n 15>> ~/mysh/top_out" echo "done" done
我得到的输出文件保存了一些机器的最高输出(比如host5-8),但是对于像host1-4这样的早期机器人来说它是空白的.如果我尝试没有"echo"主机$ i">>〜/ mysh/top_out",我可以得到所有host1-8的最高输出.
当你这样做
ssh host$i "top -n1 -b | head -n 15>> ~/mysh/top_out"
您将输出写入~/mysh/top_out
远程主机,而不是本地计算机.远程主机可能没有使用与本地计算机相同的物理主目录.如果您在某些计算机上拥有NFS或共享主目录但不是全部共享主目录,那么您将看到所描述的症状.
试着做
ssh host$i "top -n1 -b | head -n 15" >> ~/mysh/top_out
相反,或者使事情略微清洁,甚至可能
#!/bin/bash for i in $(seq 1 8); do (echo "host$i" ssh host$i "top -n1 -b | head -n 15") >> ~/mysh/top_out echo "done host$i" done