最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

使用python检测某网段已用ip和未使用的ip的方法

来源:懂视网 责编:小采 时间:2020-11-27 14:25:01
文档

使用python检测某网段已用ip和未使用的ip的方法

使用python检测某网段已用ip和未使用的ip的方法:借鉴了前辈的博客,然后自己加了很多东西。其中用到了subprocess模块>>> import subprocess>>> p = subprocess.Popen('df -h',stdin=subprocess.PIPE,stdout=subprocess.PIPE,stde
推荐度:
导读使用python检测某网段已用ip和未使用的ip的方法:借鉴了前辈的博客,然后自己加了很多东西。其中用到了subprocess模块>>> import subprocess>>> p = subprocess.Popen('df -h',stdin=subprocess.PIPE,stdout=subprocess.PIPE,stde

借鉴了前辈的博客,然后自己加了很多东西。

其中用到了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 /dev/sda1 18G 11G 5.8G 65% / tmpfs 495M 0 495M 0% /dev/shm '

#获取命令错误输出结果,通过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 '

@获取错误输出的其他方法还有: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("