ping主机并以bash格式输出CSV格式

时间:2016-05-30 14:14:44

标签: bash csv

我有一个名为ip.csv的CSV文件,格式如下:

Host,Status
192.168.0.2
192.168.0.4

我想ping IP并将输出保存在ip.csv旁边的同一文件host中。输出应如下所示:

Host,Status
192.168.0.2,Alive
192.168.0.4,Down

当我在脚本下面执行时,我没有获得所需的输出:

#!/bin/bash
while IFS=',' read -r host status
do
ping -c 1 "$host"
  if [ $? -eq 0 ]; then     
echo -e "$host,Alive" >> ip.csv
else
echo -e "$host,Down" >> ip.csv
fi
done < ip.csv

请建议。

1 个答案:

答案 0 :(得分:0)

您可以使用此更改来执行此操作 -

#!/bin/bash
a=""
while IFS=',' read -r host status
do
if [ "$host" = "Host" ]; then
    a="${a}${host}"','"${status}"$'\n'
else
    ping -c 1 "$host"
    if [ $? -eq 0 ]; then     
        a="${a}${host}"',Alive'$'\n'
    else
        a="${a}${host}"',Down'$'\n'
    fi
fi
done < ip.csv
echo -e "${a}" > ip.csv