|
# encoding:utf-8
'''
#date: 2017-8-26
#Author: XianWei from ChengDu
#scripte Function: check ip whether is alived in bulk
'''
import random
import os
import sys
import subprocess
import random
import platform
import re
from threading import Thread
from Queue import Queue
import time
def check_ip(ipaddr):
#函数用于检测IP地址合法性。来源:http://blog.csdn.net/jbxue123/article/details/23156011
addr=ipaddr.strip().split('.') #切割IP地址为一个列表
#print addr
if len(addr) != 4: #切割后列表必须有4个参数
print "%s,ip address is illegal!" %ipaddr
return False
for i in range(4):
try:
addr=int(addr) #每个参数必须为数字,否则校验失败
except:
print "%s,ip address is illegal!" % ipaddr
return False
if addr=0: #每个参数值必须在0-255之间
pass
else:
print "%s,ip address is illegal!" % ipaddr
return False
#print "check ip address success!"
return True
def ping_host(ip):
if check_ip(ip) == False: #检测IP合法性
sys.exit(1)
platformOfSystem = platform.system() #根据平台,设置ping命令
if (platformOfSystem == "Windows"):
cmd = "ping -n 2 %s" % (ip)
if (platformOfSystem == "Linux"):
cmd = "ping -c 2 %s" % (ip)
res = os.popen(cmd)
if (platform.system() == "Windows"):
if (re.findall("Lost = 2", res.read()).__len__() != 0):
print "%s is down." % ip
else:
print "%s is OK." % ip
if (platform.system() == "Linux"):
pingResult = re.findall("Destination Host Unreachable", res.read())
if (pingResult.__len__() != 0):
print "%s is down." % ip
else:
print "%s is OK." % ip
def main():
print "main threading waiting......"
ip_prefix = "192.168.142." #设置ip列表
iplist = []
n = 10
for i in xrange(1,n + 1):
iplist.append(ip_prefix + str(i))
tlist = []
for i in xrange(len(iplist)): #使用多线程ping
t = Thread(target=ping_host, args=(iplist,)) #将线程加入list
tlist.append(t)
for thread in tlist: #启动所有线程
thread.setDaemon(True)
thread.start()
for thread in tlist: #等待所有线程结束
thread.join()
print "main threading Done"
if __name__ == "__main__":
main()
|
|
|