代码语言:javascript复制
#!/usr/bin/env python
#coding:UTF-8
'''''''
代码语言:javascript复制 Author: jefferchen@163.com
代码语言:javascript复制 可在命令行直接带目的IP,也可将IP列表在文本文件中。
代码语言:javascript复制 pingip.py -d DestIP
代码语言:javascript复制 DestIP示例: a)单个: 192.168.11.1
代码语言:javascript复制 b)多个: 192.168.11.1;172.16.8.1;176.13.18.2
代码语言:javascript复制 c)网段: 192.168.11.1-127
代码语言:javascript复制 文本文件:ip.txt
代码语言:javascript复制 目的IP多行存储
代码语言:javascript复制'''''''
import argparse
import os
import platform
import time,datetime
def PingCmd():
cmdStr = ''
if platform.system()=='Linux':
cmdStr = 'ping -c 1 %s > /dev/null'
else:
cmdStr = 'ping -n 1 %s > nul'
return cmdStr
def IPV4SegList(aList):
IPSeg = aList[0].split('.')
IP4Begin = int(IPSeg[3])
IP4End = int(aList[1])
segList = []
if IP4End<=IP4Begin:
IP4End = IP4Begin
else:
IP4End =1
for ip in range(IP4Begin,IP4End):
aIP = IPSeg[0] '.' IPSeg[1] '.' IPSeg[2] '.' str(ip)
segList = [aIP]
return segList
def ParseSeg(aSeg):
segList = []
aList = aSeg.split('-')
if len(aList)==2:
segList = IPV4SegList(aList)
else:
segList = aList
return segList
def AddLineIP(IPList,aLine):
LineList = aLine.split(';')
for aSeg in LineList:
segList = ParseSeg(aSeg)
IPList = segList
return IPList
def GetIPListFromFile(filename):
IPList = []
f = open(filename)
lines = f.readlines()
for line in lines:
line = line.strip()
line = line.replace('n','')
IPList = AddLineIP(IPList,line)
return IPList
def NotifyAdmin(failureIP):
print('Network error at ',failureIP)
def ReportSummary(success,failure):
print('----DONE! Total: %s nodes. %s ---'%(success failure,timeFmt()))
def PingList(aList):
sucess,failure = 0,0
failureIP = []
print('Trying...')
for ip in aList:
cmdStr = PingCmd()%ip.replace('n','')
res = os.system(cmdStr)
if res < 1 :
sucess = 1
else:
failure = 1
failureIP = [ip]
time.sleep(1)
if failure :
NotifyAdmin(failureIP)
else:
ReportSummary(sucess,failure);
def timeFmt():
return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
def writeLog(content):
print('[%s] %s' % (timeFmt(), content))
file_object = open('ping.' time.strftime('%Y-%m-%d', time.localtime(time.time())) '.log', 'a')
file_object.write('[%s] %sn' % (timeFmt(), content));
file_object.close()
if __name__ == '__main__':
parse = argparse.ArgumentParser(description='Batch ping utility.')
parse.add_argument('-f','--filename',default='ip.txt',help='IP file name(Default IP.txt)')
parse.add_argument('-d','--destip',type=str,default='',help='destination IPs ');
args = parse.parse_args()
if args.destip!='':
IPList = AddLineIP([],args.destip)
else:
if args.filename!='':
IPFile = args.filename
else:
IPFile = 'ip.txt'
IPList = GetIPListFromFile(IPFile)
PingList(IPList)