`

python借助web框架实现获取当前没有被使用的ip地址

阅读更多

需求:

    由于我们公司内部,ip地址管理混乱,存在ip地址冲突的问题,有些时候设置开发环境的ip地址的时候只是ping一下,并没有统一管理,这里我就使用 python + web.py 搭了一个简单的web站点,达到访问就可以获取到一个可用ip地址的效果,且都通过这一个平台,避免已被使用的ip重复使用,造成ip冲突。

 

环境搭建:

    这里首先在linux服务器上安装python,然后参照http://webpy.org/的文档,去安装web.py模块

 

代码:

    ping.sh

#!/bin/bash
#------------------------------------------
# by gaoyaohua 20161121
# transfer from ping.py
# ping ip return echo 
#    0:ok     1:false
#------------------------------------------
ip=$1
result=`ping -c 3 $ip | grep '0 received' | wc -l`
echo $result

    ping.py

    

#!/usr/bin/python
#-------------------------------------
# by gaoyaohua 20161123
# run ping.py  ping.sh
# 
#-------------------------------------
import web
import subprocess
urls = (
    '/ping', 'ping_ip'
)

class ping_ip:
    def GET(self):
	count = len(open('./iplist.txt','rU').readlines())
        outip = ''
        ipduan="192.168.2."
        for i in range(1,253):
            four_ip=str(i)
            test_ip = ipduan + four_ip
            with open('./iplist.txt','r') as f:
                count_test=0
                for line in f.readlines():
                    count_test += 1
                    linestr = line.strip()
                    if linestr == test_ip:                      
                        break
                    elif count_test == count:
                        record = test_ip
                        ping = subprocess.Popen([r'./ping.sh',record],stdout=subprocess.PIPE)
                        result = ping.stdout.read()
                        if result == '1\n':
                            break
                        else:
                            outip=test_ip
                            break
            if outip == '':
                continue
            else:
                return test_ip + " is can be used"
                break


if __name__ == "__main__":
    app = web.application(urls, globals())
    app.run()

    iplist.txt

192.168.2.1
192.168.2.2
192.168.2.3
192.168.2.166

 

程序逻辑:

    python ping.py 运行脚本

    ping.py首先进行for循环192.168.2.1到253,然后ip跟iplist.txt中的地址匹配,如果相同,跳出,如果不同,调用ping.sh对ip进行3次ping的测试,如果不通,将ip返回到页面。

 

3
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics