我对脚本很新,我现在正在尝试创建一个简单的if else循环,该循环遍历一个同时列有ipaddress和hostname的文件。它基本上会检查它们是否在线。
这就是我所拥有的:
for ip in `cat /tmp/blabla2 | awk '{print $1}'` ; do
if ping -c1 $ip >/dev/null 2>&1; then
fqdn=`host $ip | awk '{print $5}'`
echo "$ip $fqdn is UP"
else
fqdn=`host $ip | awk '{print $5}'`
echo "$ip $fqdn is DOWN"
fi
done
我很难理解的是如何在不使用host $ ip
之类的情况下包含主机名当主机名已在/ tmp / blabla2中的同一行上时,似乎没有必要再进行主机查找
我尝试使用awk print在if循环中搞乱变量,但没有运气。
有关此的任何提示/技巧吗? 谢谢你的时间
答案 0 :(得分:0)
不要在for
循环(reference)中读取文件的行。 read
命令可以从文件行中读取多个单词。
while read -r ip host; do
if ping -c1 $ip >/dev/null 2>&1; then
echo "$ip $host is UP"
else
echo "$ip $host is DOWN"
fi
done < /tmp/filename
缩进对于维护自己的代码非常重要。