如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
#!/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 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中调用Ping命令,批量IP的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/jeff9031/article/details/78468128