Chinaunix
标题:
如何实现Ping的结果记录到不同的文件
[打印本页]
作者:
david0
时间:
2016-05-03 10:16
标题:
如何实现Ping的结果记录到不同的文件
新手求助:
如何实现将Ping的结果记录到不同的文件中:如果能ping通,写入到一个文件;否则写入到另一个文件中。
1. IP地址列表保存在ip_list.txt文件,ip的格式有3列
下面是ip_list.txt样例:
#设备区域 IP地址 主机名
设备A区 192.168.1.1 host1
设备A区 192.168.1.2 host2
设备B区 192.168.2.1 host3
设备C区 192.168.3.1 host4
文本文件的各列用tab键隔开;
2. 如果设备能ping通,写入到ping_ok.txt文件中,格式为:
设备A区 192.168.1.1 host1
设备C区 192.168.3.1 host4
设备B区 192.168.2.1 host3
3. 如果设备不能ping通,写入到ping_fail.txt文件中,格式为:
设备A区 192.168.1.2 host2
4. 针对每个IP执行ping操作的结果同时写入到ping_log.txt
脚本学习中,非常感谢!
作者:
99超人
时间:
2016-05-03 10:45
提示:
作者被禁止或删除 内容自动屏蔽
作者:
过过招
时间:
2016-05-03 10:46
ping通则$?为0,对应stdout 1> ping_ok.txt,ping不同$?为1,对应stderr,2>ping_fail.txt。
作者:
lll1985911
时间:
2016-05-03 10:53
#!/bin/sh
ip_list='ip_list.txt'
ping_ok='ping_ok.txt'
ping_fail='ping_fail.txt'
ping_log='ping_log.txt'
ping_max_count=4
grep -Ev '^#' ${ip_list} | while read -r device_area ip_addr hostname
do
echo -n "${ip_addr}..."
ping -c ${ping_max_count} ${ip_addr} 2>&1 >>${ping_log}
ret_val=$?
echo '[end]'
if [ ${ret_val} -ne 0 ]
then
echo ${ip_addr} >> ${ping_fail}
continue
fi
echo ${ip_addr} >> ${ping_ok}
done
作者:
jason680
时间:
2016-05-03 11:14
回复
1#
david0
$ awk '/^#/{next}{info=$0;print>"ping_log.txt";cmd="ping -t1 -c1 "$2;
ping="fail"
; while(cmd|getline){print >
"ping_log.txt"
;if(/ 0% packet loss/)
ping="ok"
};print "--------------------------\n\n">
"ping_log.txt"
;print info,ping;print info > "ping_"
ping
".txt"}' ip_list.txt
设备A区 192.168.1.1 host1 fail
设备A区 192.168.1.2 host2 fail
设备B区 192.168.2.1 host3 fail
设备C区 192.168.3.1 host4 fail
作者:
david0
时间:
2016-05-03 16:25
论坛高手很多,程序简洁实用,多谢!
作者:
jcdiy0601
时间:
2016-05-04 10:05
#!/bin/bash
while read line
do
ip=`echo $line|awk '{print $2}'`
ping $ip -c 4 > /dev/null
if [ $? -eq 0 ]
then
echo $line >> ping_ok.txt
else
echo $line >> ping_fail.txt
fi
done < ip_list.txt
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2