我有一个像这样的文件:
Sender Bob IP 10.1.1.1
Sender Alex IP 10.1.1.2
Sender Jim IP 10.1.1.3像这样的10行以相同的格式。我需要回音名字和IP。在迭代IP的for循环时,因为我要对每个IP进行ping测试。
到目前为止,我已经做到了:
THEIP=$(cat /tmp/files/extract.txt | awk '{print $4}')
THEID=$(cat /tmp/files/extract.txt | awk '{print $2}')
extract='/tmp/files/Extracted.txt'
for i in $THEIP;
do
echo "[INFO:]Pinging IP: $i"
check=$(ping -w 1 $i)
if [ $? != 0 ] ; then
echo "[WARN:] **//sender\\** is offline"
else
echo "[INFO:] $i Pingable!"
fi
done这只能到达ping,但我无法打印与IP相关的发件人。我知道我完全忽略了$THEID,这是因为我一直无法理解如何实现它。
嵌套for循环-它打印出IP1 +所有发件人,然后IP2 +所有发件人,这违背了我的目的。
我的回声应该是:
[INFO:] - Sender Bob from IP 10.1.1.1 is pingable
[INFO:] - Sender Alex from IP 10.1.1.2 is pingable诸若此类。
发布于 2018-11-10 18:41:52
你到底想要实现什么还不清楚,但这样的事情可能会奏效:
Edit1:多亏格伦的评论而有所改进
Edit2:完成了循环中的代码
input="/tmp/files/extract.txt"
while read _ id _ ip; do # iterate over the lines
echo -n "Pinging $id @ ip $ip... "
if ping -w 1 $ip 2>&1 >/dev/null; then
echo OK
else
echo NOPE
fi
done < "$input"(纯bash版本,awk可能更高效,但我不熟悉它)
https://unix.stackexchange.com/questions/480993
复制相似问题