# ip4ping **Repository Path**: gyhong/ip4ping ## Basic Information - **Project Name**: ip4ping - **Description**: 跨平台 ip4 地址ping辅助工具 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2014-01-22 - **Last Updated**: 2024-09-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #ip4pingHost.py脚本说明文档 =================================== 日期:2014-01-23 22:44 ##使用说明: ###python ip4pingHosts.py [hosts|shell|网段|类似于hosts文件配置] [开启并发进行ping数] 如:扫描网段10.245.101.0/28 python ip4pingHosts.py 10.245.101.0/28 如:测试系统hosts配置hosts是否全部可达 python ip4pingHosts.py hosts 或者 python ip4pingHosts.py /etc/hosts ###shell使用 > #python ip4pingHosts.py shell >> [ip4ping]#help #查看可使用命令 >> 目前支持 ping , scan #ping 测试网段存活主机, scan 扫描主机开放端口 >> [ip4ping]#scan net 10.245.101.50/28 1 1024 >> [ip4ping]#scan host 10.245.101.50 1 100 >> [ip4ping]#scan host 10.245.101.50 1 100 >存在bug或者问题: > 1. linux不支持中文环境 则: export LANG=en_US.UTF-8 , win cmd下,因不支持utf8,显示此编码会成乱码 > 2. 20140128 端口扫描线程数,设置过高在win7 64测试中,会程序会出错,目前程序设置默认为500个线程 ###程序说明 ---- >功能: >> 1. 命令行直接执行功能,方便其它程序直接调用 >> 2. ping网段功能 >> 3. 主机、网段主机 端口扫描功能 >> 4. 有一个简单交互shell功能,包括help帮助文档 >待完善或者计划增加功能: >> 1. shell功能完善,添加配置功能,支持多种常见格式日志输出【json,cvs】 >> 2. shell 动态配置运行参数 >> 3. ping,scan端口并发进程自动调节功能,程序有进程监控系统负载情况,能根据负载情况,调节并发数 >> 4. 考虑agent功能,支持自动部署agent,控制端可自动监控agent端口,自动下发任务 >> 5. 集成sqlite3数据库:支持日志存储,分析; ---- ###代码编码规则: > 类名:全大写 > 函数名:驼锋命名 如 yourName 首单词小写,第二个单词开始首字母大写 > 临时变量:_tXXX[ODLSdfs] 开头 > 全局变量:G_XXX[ODLSdfs] 开头 > 变量规则:倒数一个字母表示变量 类型 XXX[ODLSdfs] O:object D:dict L:list S:set d:int f:float s:string ###版本编号说明:X.X.X > 第一个X 表示主版本号: 实现一个新功能,并可正常使用 > 第二个X 表示次版本号: 实现一个功能辅助功能,如日志分析,增长一个字段,并可正常使用 > 第三个X 表示变动号: 程序有变动,如变更函数名等或者 小bug修正 ### 参考代码、资料 声明: ping资源参考来源于: http://techpool.iteye.com/blog/661864 ##程序跟踪日志: 2014-01-26 > version: 1.2.3 > 1. 解决了scan port速度问题 添加 socket.setdefaulttimeout(0.1) #设置socket超时时间, 经测试,速度基本满意 2014-01-26 > version: 1.2.1 > 1. 引用platform包,简化平台判断,测试:solaris10 [python2.6],win7_64[python 2.7.3], ubuntn 12.1 server [python2.7]测试OK > 2. 集成端口扫描功能 > 3. 修复ipNetCount函数,计算多包含广播地址 > 4. 规范程序代码 2014-01-25 > version: 1.2.0 > 1. 更新python ping函数,替换为class, 同时结合网上找到的两个python ping代码,修复在win,linux系统中time时间精度不一致问题,目前测试支持ubuntn,win7 64 > 2. PING class在网上找到ping代码基础之前,改进time计算,在socket packet data字段中加入icmp id 进行icmpid验证 > 3. 测试中,因win7系统与ubuntn系统在不同网段中,间一台在dmz区,造成测试出现结果不一致问题,开始一直奇怪程序有问题,后来在程序增加了ttl 字段,才发现原来是因为经过节点(数通设备),且测试ubuntn部署在dmz,所以有些ip ping不通是正常的 2014-01-24 > version: 1.1.1 > 1. 更新ipNetCount函数,解决非法掩码问题 目前支持 20~32位掩码配置 > 2. 按定义规范更新函数名称等 2014-01-22 > version : 1.1 > 1. 替换ping函数,使用python socket替代调用系统 ping 命令,测试win7 OK[占用资源更小,速度更快], ubuntn测试有问题socket conntion time 计算有误 > 2. 集成一个简单shell 目前支持执行ping net命令, sh 调用系统命令 > 调用方法:D:\pdevn\python\python.exe -u D:\ip4ping\ip4ping\ip4pingHosts.py shell > 变更: > 删除除run 函数 2014-01-20 > 1. 在原ip4ping程序基础之上进行功能完善 > 2. 程序实现,通过调用系统ping命令,利用python进行结果处理,实现跨平台, 利用python多线程,实现快速ping功能 ### 功能: 1. ping网段,或者定义 类似于/etc/hosts 主机 2. 可将结果输出为文本日志,方便shell中直接使用 [ok] 准备支持json,cvs格式, 3. 版本2.0 【程序测试中】 简单shell功能,支持动态配置管理监控网络,或者 主机,数据采用sqlite3存储,并利用触发器自动跟进各ip使用记录 2014-01-21 测试脚本可以正常工作于win7,ubuntn,solaris10,先发布出来作为第一个版本,往后会继续跟进。 ## 应用实例: 当前版本 1.0 开发:gyhong 使用说明: >Usage: python ip4pingHosts.py [hosts|filename|net/mask] numberping[1~200|defalut 100] >>> eaxmples: >>> ping net by 50 pings >>> python ip4pingHosts.py 10.245.101.0/24 50 >>> ping system /etc/hosts file >>> python ip4pingHosts.py hosts >>> ping my config hostsfile >>> python ip4pingHost.py c:\myhosts.txt ### root@szwgSys:/tmp# python ip4pingHosts.py Usage: python ip4pingHosts.py [hosts|filename|net/mask] numberping[1~200|defalut 100] eaxmples: ping net by 50 pings python ip4pingHosts.py 10.245.101.0/24 50 ping system /etc/hosts file python ip4pingHosts.py hosts ping my config hostsfile python ip4pingHost.py c:\myhosts.txt ----- ### root@szwgSys:/tmp# python ip4pingHosts.py 192.168.20.1/28 [2014-01-22 13:57:37]start running ping ip : 14 -> now 0% ip status datetime 192.168.20.17 down 2014-01-22 13:57:39 192.168.20.18 down 2014-01-22 13:57:39 192.168.20.19 down 2014-01-22 13:57:39 192.168.20.20 down 2014-01-22 13:57:39 192.168.20.21 down 2014-01-22 13:57:39 192.168.20.22 down 2014-01-22 13:57:39 192.168.20.23 down 2014-01-22 13:57:39 192.168.20.24 down 2014-01-22 13:57:39 192.168.20.25 down 2014-01-22 13:57:39 192.168.20.26 down 2014-01-22 13:57:39 192.168.20.28 down 2014-01-22 13:57:39 192.168.20.27 down 2014-01-22 13:57:39 192.168.20.29 down 2014-01-22 13:57:39 192.168.20.30 down 2014-01-22 13:57:39 192.168.20.31 down 2014-01-22 13:57:39 ip4ping run:start [2014-01-22 13:57:37] - end [2014-01-22 13:57:39] ---- ### win7 中文cmd.exe # D:\pdevn\python\python.exe -u ip4ping\ip4pingHosts.py 10.245.101.50/24 100 [2014-01-22 11:17:08]start running ping ip : 254 -> now 0% [2014-01-22 11:17:12]38.82% now ip[10.245.101.100] [2014-01-22 11:17:12]42.35% now ip[10.245.101.109] [2014-01-22 11:17:12]43.53% now ip[10.245.101.112] [2014-01-22 11:17:13]44.31% now ip[10.245.101.114] [2014-01-22 11:17:16]72.94% now ip[10.245.101.187] ............... ip4ping run:start [2014-01-22 11:17:08] - end [2014-01-22 11:17:26 ---- ### root@YangLu2012:/home/root# python ip4pingHosts.py shell [ip4ping]#ping 192.168.0.1/30 [2014-01-23 22:13:42]start running ping ip : 2 -> now 0% ip status time(ms) datetime 192.168.0.1 down 9999 ms 2014-01-23 22:13:43 192.168.0.2 down 9999 ms 2014-01-23 22:13:43 192.168.0.3 down 9999 ms 2014-01-23 22:13:43 ip4ping run:start [2014-01-23 22:13:33] - end [2014-01-23 22:13:44] [ip4ping]#q root@YangLu2012:/home/root#