我正在尝试清理我的shell脚本。我正在尝试阅读服务器列表 文本文件“serverlist”并shh每个服务器获取命令的结果并存储到文件“result_segfault”。我成功地为每个服务器做了这个,我想列出服务器的名称和下面的输出:
示例:
-----------------
Servername
-----------------
Output of the command
----------------
Servername2
------------------
Output of the command
这是我的代码
#!/bin/bash
for HOSTNAME in $(cat serverlist);
do
SCRIPT="cat /var/log/messages | grep 'segfault at 0000000000000098'"
for HOSTNAME in ${HOSTNAME} ;
do
ssh ${HOSTNAME} "${SCRIPT}" >"result_segfault"
done;
done
我不知道如何添加服务器名称和分隔符
答案 0 :(得分:2)
{
echo "----------------"
echo "$HOSTNAME"
echo "----------------"
ssh "$HOSTNAME" "${SCRIPT}"
} >>"result_segfault"
大括号{...}
将语句组合在一起,以便可以使用单个重定向收集其标准输出。我用过“>>”取代“>”对于重定向,因为从您的示例中可以看出,您希望将每个主机的结果附加在一起,而不是每次查询新主机时都覆盖它。
答案 1 :(得分:0)
有各种风格修复;
#!/bin/bash
while read HOSTNAME
do
ssh ${HOSTNAME} grep 'segfault at 0000000000000098' /var/log/messages
done <serverlist >result_segfault