【发布时间】:2016-01-13 18:22:02
【问题描述】:
我对脚本编写相当陌生,目前正在尝试创建一个简单的 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
我很难理解的是如何在不使用类似主机 $ip 的情况下包含主机名
当主机名已经在 /tmp/blabla2 的同一行时,似乎没有必要再进行一次主机查找
我尝试过使用 awk print 处理 if 循环中的变量,但没有成功。
对此有任何提示/技巧吗? 感谢您的宝贵时间
【问题讨论】:
-
为什么要通过管道将 blabla2 传输到 awk 以仅打印第一列?
-
测试文件“blabla2”包含:123.123.123.123 test.com
-
只打印 $2 而不是 $1 不够吗?
-
我想这也可以,但是我将如何列出 IP 地址?这基本上就是我目前所坚持的。回声 $ip 和 $fqdn .. 谢谢伙计。
-
我猜你想同时分配两个变量。检查这个例子
read a b < <(echo 1 2); echo $a $b
标签: bash loops if-statement