1.单线程ping所知道的ip地址
在脚本所在目录下新建ip_list.txt和ip_False.txt
其中ip_list.txt是存放所已知的ip地址(每行只写一个ip,最后一个ip也需要换行)
脚本未做兼容处理,只使用于window系统
#!/usr/bin/env/python
#_*_coding:utf-8_*_
#Data:17-05-15
#Auther:苏莫
#Link:http://blog.csdn.net/lingluofengzang/
#PythonVersion:python2.7
#filename:ping_ips.py
import sys
import subprocess
import os
import time
'''
检测设备运行是否正常
待检测IP添加在ip_list.txt
每次不正常IP追加在文件ip_False.txt
'''
reload(sys)
sys.setdefaultencoding('utf-8')
#获取当前工作路径
def getCurrendPath():
return os.getcwd()
#调用ping命令,判断IP是否正常
def subPing():
ip_list = []
_path = getCurrendPath()
ip_lists = _path + r'\ip_list.txt'
ip_False = _path + r'\ip_False.txt'
for line in open(ip_lists):
ret = subprocess.call("ping %s -n 3" % line,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE)
if ret == 1:
ip = '%s is not alive, there have some problem' % line[:-1]
ip_list.append(ip)
if ip_list:
nowTime = getDataTime()
errorFile = open(ip_False,'a')
errorFile.write(u"时间"+nowTime+'\n')
for errorIP in ip_list:
errorFile.write(errorIP+'\n')
errorFile.close()
print '''
===============================
Problems with device operation!
Please check the equipment!!!
===============================
'''
else:
print '''
===============================
Everything is OK !!!
===============================
'''
#获取当前时间,格式XXXX-XX-XX
def getDataTime():
return time.strftime('%Y-%m-%d',time.localtime(time.time()))
if __name__ == '__main__':
subPing()
2.多线程扫描内网存活主机
运行脚本格式: python IPscanner.py [本机ip]
脚本可用在所有系统上
#!/usr/bin/env/python
#_*_coding:utf-8_*_
#Data:17-09-03
#Auther:苏莫
#Link:http://blog.csdn.net/lingluofengzang/
#PythonVersion:python2.7
#filename:IPscanner.py
import os
import sys
import time
import threading
reload(sys)
sys.setdefaultencoding("utf-8")
# 获取脚本运行的系统
def get_system():
if os.name == 'nt':
return 'n'
else:
return 'c'
def ping_ip(ip_str):
shell = ['ping','-{op}'.format(op=get_system()),'1',ip_str]
output = os.popen(' '.join(shell)).readlines()
for line in list(output):
if not line:
continue
if str(line).upper().find('TTL') >= 0:
print "ip: %s is ok " % ip_str
break
def find_ip(ip_prefix):
for i in xrange(1,256):
ip = '%s.%s' % (ip_prefix,i)
threading.Thread(target = ping_ip , args = (ip , )).start()
time.sleep(0.3)
if __name__ == '__main__':
cmd = sys.argv[1:]
args = ''.join(cmd)
ip_prefix = '.'.join(args.split('.')[:-1])
find_ip(ip_prefix)