use*_*564 6 unix ssh bash shell echo
我想写一个shell脚本来做以下四件事:
我试过这个:
#! /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
Run Code Online (Sandbox Code Playgroud)
我得到的输出文件保存了一些机器的最高输出(比如host5-8),但是对于像host1-4这样的早期机器人来说它是空白的.如果我尝试没有"echo"主机$ i">>〜/ mysh/top_out",我可以得到所有host1-8的最高输出.
当你这样做
ssh host$i "top -n1 -b | head -n 15>> ~/mysh/top_out"
Run Code Online (Sandbox Code Playgroud)
您将输出写入~/mysh/top_out远程主机,而不是本地计算机.远程主机可能没有使用与本地计算机相同的物理主目录.如果您在某些计算机上拥有NFS或共享主目录但不是全部共享主目录,那么您将看到所描述的症状.
试着做
ssh host$i "top -n1 -b | head -n 15" >> ~/mysh/top_out
Run Code Online (Sandbox Code Playgroud)
相反,或者使事情略微清洁,甚至可能
#!/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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34411 次 |
| 最近记录: |