设为首页 收藏本站
查看: 1443|回复: 0

[经验分享] python 检测某网段已用ip和未使用的ip

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-3-22 09:45:16 | 显示全部楼层 |阅读模式
其中用到了subprocess模块

>>> import subprocess
>>> p = subprocess.Popen('df -h',stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)
#获取命令执行结果的返回码,通过wait()函数
>>> p.wait()
0

#获取命令输出结果(标准输出),通过read()方法
>>> 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'


#获取命令错误输出结果,通过read()方法
>>> p.stderr.read()            
''

#为空,说明没有错误输出

#获取错误输出
<subprocess.Popen object at 0x7f267528dbd0>
>>> p = subprocess.Popen('ls /etc/password',stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True,close_fds=True)

>>> p.stderr.read()
'ls: cannot access /etc/password: No such file or directory\n'

@获取错误输出的其他方法还有:read(),readline(),readlines(),close(),write()和writelines()等.



#!/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


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-353402-1-1.html 上篇帖子: python 安装第三方库pygame 下篇帖子: 用python生成指定位数的密码 python 检测
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表