`

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
分享到:
评论

相关推荐

    源码:利用python的scrapy框架爬取安居客房价信息存入数据库并可视化

    在本项目中,我们主要探讨如何使用Python的Scrapy框架来爬取安居客网站上的房价信息,并将这些数据存储到数据库中,最后实现数据的可视化。以下是对整个过程的详细阐述: 1. **Scrapy框架**: Scrapy是一个用...

    Python-饿了么美团最大红包机器人

    为了防止频繁请求导致IP被封禁,项目可能还采用了IP代理池技术,通过轮换不同的IP地址来分散请求。Python的`proxybroker`库可以帮助获取和管理可用的HTTP/HTTPS代理。 最后,为了保证程序的稳定运行,我们可能需要...

    python容易上手的小项目练习

    8. **自动化批量ip查询**:这通常涉及网络编程,使用Python的socket库或者第三方库如gevent或asyncio进行IP地址的查询,可能包括解析IP地址,查询其地理位置信息等。 9. **项目八**:未提供详细信息,可能与Web开发...

    Python库 | proxy_pool_redis-0.0.7.tar.gz

    1. **代理IP存储**:该库使用Redis的String类型存储代理IP,键通常表示IP地址,值可以包含相关元信息如端口、类型(HTTP/HTTPS)、有效时间等。 2. **代理IP验证**:proxy_pool_redis库提供了验证代理IP是否可用的...

    d5-Python网络编程.docx

    Django框架,作为Python编程语言的杰出代表,以其高效的MVC(Model-View-Controller)架构,为开发者提供了构建高质量、易维护的Web应用程序的便捷途径。Django最初源于开源社区,它的设计灵感来源于在线新闻站点的...

    Python Flask实现的虚拟支付与商城应用的积分制管理系统

    - 系统采用Python3作为编程语言,利用Flask轻量级Web框架,实现了一个高性能的后端服务。 - Python以其简洁明了的语法和强大的库支持而被广泛用于开发各种应用程序,而Flask框架则因其轻量级和灵活特点,适合快速...

    Pro Python System Administration (2nd ed.)

    - **应用场景**:自动分配IP地址、避免地址冲突、记录IP地址使用情况等。 - **关键技术点**: - 使用Python Web框架(如Flask或Django)构建Web应用。 - 数据库设计与管理。 - 用户界面设计与实现。 4. **第4...

    python毕业设计之反爬虫技术的研究源码.zip

    在这种情况下,我们可以利用Python的`rotating_proxies`库,结合代理IP池,实现IP地址的轮换,避免被封禁。 3. **滑动验证码与图像识别**:滑动验证码是常见的反爬策略,Python中的`opencv-python`库可以帮助我们...

    Webpy-coobook-pdf中文教程

    Web.py是一个轻量级的Python Web框架,以其简洁性和灵活性著称,适用于构建各种规模的Web应用程序。这份教程覆盖了从基础知识到高级主题的广泛内容,旨在帮助读者掌握Web.py的核心功能,并学会如何高效地使用它来...

    python1903笔记 12-spider.zip

    2. IP代理:通过IP代理池,频繁更换IP地址,降低单个IP的访问频率。 3. 超时重试:设置请求超时和重试机制,处理网络不稳定情况。 4. Cookies管理:处理网站登录验证,管理Session和Cookies。 五、进阶技巧 1. ...

    使用Python的Bottle框架写一个简单的服务接口的示例

    Bottle是一款轻量级的Python Web框架,非常适合用于快速开发小型项目和服务接口。它支持多种Web服务器,并且易于部署和维护。与Django和Flask等框架相比,Bottle更注重简洁性和速度,这使得它成为构建简单Web应用的...

    python的网络编程

    Python因其简洁、高效的语言特性,被广泛应用于各种场景,包括但不限于Web开发、数据处理、自动化脚本编写等。其中,BitTorrent和Zope作为两个典型案例,充分展示了Python在网络编程方面的实力。 ### BitTorrent与...

    Learning-Python-Networking-Second-Edition:Packt出版的《学习Python网络-第二版》

    本书涵盖以下激动人心的功能:在网络工具上执行Python模块自动执行有关网络信息分析和提取的任务了解Python中可用的异步编程模块了解Python编程中的IP地址操作模块Python可用的专注于Web应用程序的框架操纵IP地址并...

    基于python的反爬虫技术的研究源码数据库.docx

    3. **IP封禁**:根据访问者的IP地址判断是否为爬虫,并对疑似爬虫的IP进行封禁。 4. **动态加载数据**:采用JavaScript动态加载页面内容,使传统的爬虫无法直接获取完整数据。 5. **用户行为模拟**:通过分析正常...

    基于CentOS搭建Python Django环境过程解析

    Python作为一种简洁高效的编程语言,在Web开发领域得到了广泛应用,尤其是借助Django这样的成熟框架,能够极大地提高开发效率。本篇文章将详细介绍如何在CentOS操作系统上搭建Python Django开发环境,并通过实际操作...

    ## 爬虫基础知识、爬虫实例与反爬机制详解

    为了应对这种情况,开发者通常会采用更换IP地址的策略,比如使用代理服务器或IP池。 ##### 验证码 一些网站会在检测到异常访问行为时弹出验证码,以验证用户身份。处理这类情况通常需要借助OCR技术或者第三方服务...

    爬虫项目.rar

    为应对这些挑战,我们可以使用IP代理池,通过更换IP地址来避免被封禁。同时,了解和遵守网站的robots.txt文件规定也是爬虫道德的重要体现。 四、动态网页的抓取 随着Web技术的发展,动态加载的网页越来越多。对于...

    搜寻器:python的网络搜寻器

    7. 反爬与IP代理:为了防止被目标网站封禁,爬虫可能需要使用IP代理池,定期更换请求的IP地址,以避免过于频繁的访问引起注意。同时,理解和处理网站的反爬机制(如验证码、User-Agent限制等)也是爬虫开发中的重要...

    PyPI 官网下载 | aws-cdk.aws-servicediscovery-1.84.0.tar.gz

    它可以自动管理DNS记录和IP地址,使得服务之间的依赖关系更加清晰和动态。 在1.84.0版本中,这个库可能包含了一些新特性、增强功能和错误修复。开发者可以期待更稳定、更高效的API调用,以及对最新AWS服务的支持。...

    Django上线部署之IIS的配置方法

    在当今的Web开发中,Django作为一个高性能的Python Web框架被广泛应用于快速开发复杂的、数据库驱动的网站。而IIS(Internet Information Services)是由微软提供的一个用于Windows平台的Web服务器,虽然不像Apache...

Global site tag (gtag.js) - Google Analytics