感谢版主,
在此记录下一个方法,上一个博文中提到的问题1,后来并没有去检查具体的返回结果,而是与ping 127.0.0.1的返回值进行对比,127.0.0.1肯定是通的,如果对比结果一直,则为alive状态,如果不一致则为down状态,如此便可正确判断设备的联通性了,同时实现的功能做了一些优化,ip地址和数目可以手动输入到文件中,如果ping包数没有人工输入则使用默认值
-
file = open(r'D:\test_case\ip.txt','r') #读取要检查的ip地址
-
lines=file.readlines()
-
file.close()
-
-
source = r'D:\iptmp.txt'
-
ks = int(time.time()) #记录开始时间
-
for ip in lines:
-
ip_list=ip.replace('\n','')
-
ip_new=ip_list.split(',')
-
ip = ip_new[0]
-
new_num = int(ip_new[1])
-
if new_num > 0: #检查输入的num值,并赋予新值
-
ip_num = new_num
-
pass
-
ret=subprocess.call('ping %s -w 1 -n %d ' %(ip,ip_num),shell = True,stdout=open(r'D:\test_case\iptmp.txt','w'), stderr=subprocess.STDOUT)
-
ret1=os.system('ping -n %d -w 1 127.0.0.1' %ip_num)
-
-
if ret == ret1: #对比两种结果并作出在时间范围内设备的连接状态判断,备份检查过程
-
print ("at time from %d to %s %s: is alive" % (ks,js,ip))
-
js = time.strftime('%d%H%M%S')
-
bak_command = "copy /B %s %s" %(source,target)
-
if os.system(bak_command) == 0:
-
print ('Successful backup to', target)
-
else:
-
print ('Backup FAILED' )
-
else:
-
print ("at time from %d to %s %s is down" % (ks,js,ip))
-
target =today_path+os.sep+ip+'_'+js+'---fail---'+'.txt'
-
bak_command = "copy /B %s %s" %(source,target)
-
if os.system(bak_command) == 0:
-
print ('Successful backup to', target)
-
else:
-
print ('Backup FAILED' )
运行结果:
at time from 1378870460 to 11113459 192.168.12.100: is alive
at time from 1378870460 to 11113547 192.168.12.102 is down
备份的ping操作过程
第一个文件(192.168.12.100_11113459---ok---.txt):
正在 Ping 192.168.12.100 具有 32 字节的数据:
....此处省略19条
来自 192.168.12.100 的回复: 字节=32 时间<1ms TTL=64
192.168.12.100 的 Ping 统计信息:
数据包: 已发送 = 20,已接收 = 20,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0ms,平均 = 0ms
第二个文件(192.168.12.102_11113547---fail---.txt):
正在 Ping 192.168.12.102 具有 32 字节的数据:
...此处省略19条
请求超时。
192.168.12.102 的 Ping 统计信息:
数据包: 已发送 = 20,已接收 = 0,丢失 = 20 (100% 丢失),
阅读(4980) | 评论(0) | 转发(0) |