Home  >  Article  >  Backend Development  >  How to use python to detect used IP and unused IP of a certain network segment

How to use python to detect used IP and unused IP of a certain network segment

高洛峰
高洛峰Original
2017-03-22 10:11:001709browse

I learned from the blogs of my predecessors and then added a lot of things myself.

The subprocess module is used

>>> import subprocess

>>> p = subprocess.Popen('df -h',stdin =subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)

#Get the return code of the command execution result through wait()function

>>> p.wait()

0

#Get the command output result (standard output) through the read() method

> >> 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'

#Get the command error output result through the read() method

>>> p.stderr.read()          

''

# is empty, indicating that there is no error output

#Get error output

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'

@Get other error output There are also methods: read(), readline(), readlines(), close(), write() and writelines(), etc.

#!/usr/bin/env python

#_*_ coding:utf8 _*_

# by lijiajun

import re,subprocess,os,sys

net_region='192.168.3'

print("

#")

print("#This script is mainly based on ping, testing a certain Network segment used ip and unused ip                                                                                                                                                                                       #" /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

,

time

out ):

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

The above is the detailed content of How to use python to detect used IP and unused IP of a certain network segment. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn