对Bash中的逗号分隔文件执行Ping监控?

时间:2019-07-09 13:48:13

标签: linux bash

我正在尝试为OpenVPN客户端设备创建ping监视。

我想从IP列表ping所有设备。

.txt文件看起来像这样:

client1,10.8.0.2
client2,10.8.0.3
client3,10.8.0.3
.. and so on 

我希望bash脚本创建一个.txt文件,其中包含以下内容:

client1: online
client2: offline
client3: online
and so on.

这怎么可能?

谢谢!

1 个答案:

答案 0 :(得分:0)

出于我的需要,我使用以下脚本:

#! /bin/bash
while read -r client address
do
    ping -c 1 $address
    ret=$?
    if [[ 0 -eq $ret ]] 
    then
        echo "$client: online"
    else
        echo "$client: off line"
    fi
done < clients

使用:

IFS=,

将逗号设置为字段分隔符

while read -r foo bar

读取文件并将字段存储在clientadrress变量中

pinc -c 1 address

仅对address进行一次

ret=$?

获取ping命令的返回值(一切正常时返回0)

如果[[0 -eq $ ret]] ....

测试ping是否成功

echo "$client: online"

给出ping结果,在线或离线打印

done < clients

惯用语构造,以逐行读取文件