使用bash / linux ping多个子网并保存在外部文件中

时间:2017-03-30 14:23:07

标签: bash

尝试创建一个脚本来ping多个子网, 但脚本似乎没有正常工作, 我似乎错过了什么 任何帮助将不胜感激

ping和过滤功能:

ping_hosts() {
  ping -c 1 $1 > /dev/null
  if [ $? -eq 0 ]; then
  echo -e "server $1 is online"
  echo $1 >> live_ser_list
 fi
}

提交IP以过滤:

for i in '192.168.0.' '10.0.0.' '10.0.1.' '192.168.1.';do
echo "starting $i"0" network"
   for j in $i{1..254};
   do
    ping_hosts $j & disown
   done
done

编辑 尝试$1$j 列表文件未创建...

1 个答案:

答案 0 :(得分:0)

您的脚本中存在一些错误,这是一个改进版本。注意所有变量的引号等。

ping_hosts() {
    local addr="$1"
    if ping -c 1 "${addr}" &> /dev/null; then
        echo "server ${addr} is online"
        echo "${addr}" >> live_ser_list
    fi
}

subnets=("192.168.0." "10.0.0." "10.0.1." "192.168.1.")

for subnet in "${subnets[@]}"; do
    echo "starting ${subnet}0 network"
    for octet in {1..254}; do
        ping_hosts "${subnet}${octet}" & disown
   done
done