我有一个脚本,用于检查hosts文件中的主机列表,连接然后检查文件以查看输出是什么,如果输出是两个特定字符串,则bash脚本报告该进程失败
我已经写了一些看起来像它应该没有问题的东西,我甚至尝试过没有脚本在解释器上运行它返回我期望的,但是当在脚本中运行时它没有给出所需的反馈
它报告主机#2的进程失败,而实际上它无法连接到主机#2。
代码
#!/bin/bash
FILE='InternalAL2'
touch $FILE
BADPROCESS=()
for ip in $(cat /etc/hosts | grep serverAL2.[9][0-9][0-9][0-9] | awk {' print $2 '})
do ssh -n -f $ip -i ~/.ssh/personal.ssh "sleep 1; cat /etc/internalstate.txt | grep Status" > $FILE.txt
if cat $FILE.txt | grep "NOT RUNNING" ; then
echo "NOT RUNNING detected on $ip"
BADPROCESS+=($ip)
elif cat $FILE.txt | grep "STOPPED" ; then
echo "STOPPED detected on $ip"
STOPPED+=($ip)
else
echo "ALL OK ON $ip"
fi
printf "$ip checked \n"
done
托管文件
serverAL2.9000 <--- NOT RUNNING in file
serverAL2.9001 <--- Unreachable, timed out
...
输出
我不知道为什么它会在检查文件内容之前跳过