在Python中調(diào)用Ping命令,批量IP的方法
更新時(shí)間:2019年01月26日 10:12:17 作者:jeff9031
今天小編就為大家分享一篇在Python中調(diào)用Ping命令,批量IP的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
如下所示:
#!/usr/bin/env python
#coding:UTF-8
'''''''
Author: jefferchen@163.com
可在命令行直接帶目的IP,也可將IP列表在文本文件中。
pingip.py -d DestIP
DestIP示例: a)單個(gè): 192.168.11.1
b)多個(gè): 192.168.11.1;172.16.8.1;176.13.18.2
c)網(wǎng)段: 192.168.11.1-127
文本文件:ip.txt
目的IP多行存儲
'''''''
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] %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)
以上這篇在Python中調(diào)用Ping命令,批量IP的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python使用Pillow將照片轉(zhuǎn)換為1寸報(bào)名照片的教程分享
在現(xiàn)代科技時(shí)代,我們經(jīng)常需要調(diào)整和處理照片以適應(yīng)特定的需求和用途,本文將介紹如何使用wxPython和Pillow庫,通過一個(gè)簡單的圖形界面程序,將選擇的照片轉(zhuǎn)換為指定尺寸的JPG格式,并保存在桌面上,需要的朋友可以參考下2023-09-09
解決python xx.py文件點(diǎn)擊完之后一閃而過的問題
今天小編就為大家分享一篇解決python xx.py文件點(diǎn)擊完之后一閃而過的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06
Python轉(zhuǎn)為C語言并編譯生成二進(jìn)制文件的教程詳解
這篇文章主要為大家詳細(xì)介紹了將Python轉(zhuǎn)為C語言并編譯生成二進(jìn)制文件的相關(guān)教程,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-12-12
Python腳本實(shí)現(xiàn)自動將數(shù)據(jù)庫備份到 Dropbox
本文給大家分享的是作者使用python腳本實(shí)現(xiàn)自動備份mysql數(shù)據(jù)庫到的dropbox網(wǎng)盤的代碼,非常的簡單實(shí)用,有需要的小伙伴可以參考下2017-02-02

