重点& 跟wait,这样“并发”的结果是输出结果不是能按顺序,后台返回。 如果需要再排序下。
- #!/bin/bash
- #********************************#
- #2013-01-11 17:00:00 wanggy exp #
- #note:ping monitor #
- #********************************#
- set -u
- ping_fun()
- {
- d_network=192.168.1
- echo -n "input the network(default $d_network):"
- read network
- : ${network:=$d_network}
- echo "network:$network"
- d_hostip_beg=1
- d_hostip_end=254
- echo -n "input the hostip(default $d_hostip_beg $d_hostip_end):"
- read hostip_beg hostip_end
- : ${hostip_beg:=$d_hostip_beg}
- : ${hostip_end:=$d_hostip_end}
- echo "hostip_beg:$hostip_beg"
- echo "hostip_end:$hostip_end"
- if [ $hostip_beg -gt $hostip_end ];then
- echo "$hostip_beg greater than $hostip_end!!!"
- exit 0
- fi
- : >pinglog
- : >pingerrlog
- ping_count=3
- for ((hostip=$hostip_beg;hostip<=$hostip_end;hostip++));do
- {
- host=$network.$hostip
- echo "开始ping检测$host"
- ping -c $ping_count $host >/dev/null
- if [ $? = 0 ];then
- echo "$host is up"
- echo "$host is up" >>pinglog
- else
- echo "$host is down"
- echo "$host is down" >>pingerrlog
- fi
- }&
- done
- wait
- }
- main()
- {
- echo "----开始执行ping程序----"
- ping_fun
- }
- main
- exit 0
阅读(2471) | 评论(0) | 转发(0) |