Python中調用Ping命令,批量IP__Python

來源:互聯網
上載者:User
#!/usr/bin/env python#coding:UTF-8'''''''
  Author: jefferchen@163.com
  可在命令列直接帶目的IP,也可將IP列表在文字檔中。
  pingip.py -d DestIP 
  DestIP樣本: a)單個: 192.168.11.1
               b)多個:  192.168.11.1;172.16.8.1;176.13.18.2
               c)網段:  192.168.11.1-127
    文字檔:ip.txt
            目的IP多行儲存
'''''''import argparseimport osimport platformimport time,datetimedef PingCmd():    cmdStr = ''    if platform.system()=='Linux':        cmdStr = 'ping -c 1 %s > /dev/null'    else:        cmdStr =  'ping -n 1 %s > nul'    return cmdStrdef 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  segListdef ParseSeg(aSeg):    segList = []    aList = aSeg.split('-')    if len(aList)==2:        segList = IPV4SegList(aList)    else:        segList = aList    return segListdef AddLineIP(IPList,aLine):    LineList = aLine.split(';')    for aSeg in LineList:        segList = ParseSeg(aSeg)        IPList += segList    return IPListdef 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 IPListdef 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] %s\n' % (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)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.