python 检测某网段已用ip和未使用的ip
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 检测某网段已用ip和未使用的ip相关的知识,希望对你有一定的参考价值。
借鉴了前辈的博客,然后自己加了很多东西。
其中用到了subprocess模块
>>> import subprocess
>>> p = subprocess.Popen(‘df -h‘,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)
#获取命令执行结果的返回码,通过wait()函数
>>> p.wait()
0
>>> p.stdout.read()
‘Filesystem Size Used Avail Use% Mounted on\n/dev/sda1 18G 11G 5.8G 65% /\ntmpfs 495M 0 495M 0% /dev/shm\n‘
‘‘
#为空,说明没有错误输出
>>> p = subprocess.Popen(‘ls /etc/password‘,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True,close_fds=True)
#!/usr/bin/env python
#_*_ coding:utf8 _*_
# by lijiajun
import re,subprocess,os,sys
net_region=‘192.168.3‘
print("#########################################################")
print("#此脚本主要基于ping,测试某网段已用ip和未使用的ip #")
print("#分别将其保存到/tmp/alive_ip.txt #")
print("#以及/tmp/dead_ip.txt #")
print("#########################################################")
print(" ")
if os.path.isfile("/tmp/alive_ip.txt"):
os.popen("mv /tmp/alive_ip.txt /tmp/alive_ip.txt.old")
print "you can see the used ip in this file : /tmp/alive_ip.txt"
if os.path.isfile("/tmp/dead_ip.txt"):
os.popen("mv /tmp/dead_ip.txt /tmp/dead_ip.txt.old")
print "you can see the unused ip in this file : /tmp/dead_ip.txt"
print(" ")
dead_ip=0
alive_ip=0
def check_alive(ip,count,timeout):
global alive_ip
global dead_ip
cmd=‘ping -c %d -w %d %s‘ % (count,timeout,ip)
p=subprocess.Popen(cmd,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True)
result=p.stdout.read()
regx=re.findall(‘100% packet loss‘,result)
if len(regx)==0:
print("\033[1;32;40m %s is UP \033[0m") % (ip)
f=file(‘/tmp/alive_ip.txt‘,‘a‘)
f.write(‘%s\n‘ %ip)
f.close()
alive_ip=alive_ip+1
print "alive_ip count is %d" % alive_ip
return alive_ip
else:
print "\033[31m %s is DOWN\033[0m" % (ip)
f=file(‘/tmp/dead_ip.txt‘,‘a‘)
f.write(‘%s\n‘ %ip)
f.close()
dead_ip=dead_ip+1
print "dead_ip count is %d" % dead_ip
return dead_ip
if __name__=="__main__":
#f=file(‘/tmp/iplist.txt‘)
for i in range(1,255):
ip=‘%s.%s‘ % (net_region,i)
print ip
check_alive(ip,1,1)
print (" ")
print "final dead_ip count is %d" % dead_ip
print "final alived_ip count is %d" % alive_ip
本文出自 “我是卖报的dba” 博客,请务必保留此出处http://lijiajun.blog.51cto.com/9530479/1908724
以上是关于python 检测某网段已用ip和未使用的ip的主要内容,如果未能解决你的问题,请参考以下文章