ping,python实现批量ping包工具--小案例v5阶段版本,可以使用了
ping,python实现批量ping包工具--小案例v5阶段版本,可以使用了,最近在项目上需求一个检测设备状态的工具,找寻了很多,都是不能满足自己的需求,
编写了一个ping包检测工具,可以实现,ping包中包含IP地址,IP地址名称,检测结果可以出现是否ping通的统计情况记录:
基本使用需求:
1.新建‘config’文件夹,里面包含“ipaddr.csv”文件,这个里面有两个字段“ip,ip名称”,内容类似
ip | ip名称 |
192.168.1.9 | 谷歌 |
223.5.5.5 | test |
8.8.8.8 | 阿里 |
2.“destdata”文件夹,存放生成的结果文件,“result.csv”里面有个这个文件,结果内容:
223.5.5.5 | test | √ |
223.5.5.5 | test | √ |
223.5.5.5 | test | √ |
8.8.8.8 | 阿里 | √ |
8.8.8.8 | 阿里 | √ |
8.8.8.8 | 阿里 | √ |
223.5.5.5 | test | √ |
8.8.8.8 | 阿里 | √ |
223.5.5.5 | test | √ |
8.8.8.8 | 阿里 | √ |
192.168.1.9 | 谷歌 | x |
192.168.1.9 | 谷歌 | x |
192.168.1.9 | 谷歌 | x |
192.168.1.9 | 谷歌 | x |
修改了几个版本后终于确定了这个可以投入使用。
import os
from ping3 import ping
import csv
import time
import os
import sysfrom concurrent.futures import ThreadPoolExecutor as Pool#核心原理是:concurrent.futures会以子进程的形式,平行的运行多个python解释器,
# 从而令python程序可以利用多核CPU来提升执行速度。由于子进程与主解释器相分离,
# 所以他们的全局解释器锁也是相互独立的。每个子进程都能够完整的使用一个CPU内核。# 读取csv文件
def readcsvfile(filename="./config/ipaddr.csv"):# if not os.path.exists(filename):# print("ipaddr.csv文件不存在,请配置检测的IP地址!")# sys.exit()if not os.path.exists(filename) or not os.path.exists('./config'):print("ipaddr.csv文件不存在,或者‘config文件夹不存在!’请检查./config/ipaddr.csv")sys.exit()with open(filename,'r')as fr:swaplines = []csvreader=csv.reader(fr)for line in csvreader:if line[0]=='ip': # 判断是否是表头,如果是表头的话,就是跳过这一行continueif line[1]=="": # 判断第二列是否‘’值,如果是空值的话,就是写入‘#’,符号,进行填充。line[1]="#"# print(line)# print(line[0])swaplines.append(line)return swaplines # 返回一个列表,到main程序中,调用这个列表# pinginfo(line)# 核心模块,检测是否在线,‘from ping3 import ping’中ping3中的ping模块进行检测。
def pinginfo(ipline):ip=ipline[0]ipname=ipline[1]ping_result=ping(ip) # 调用ping3中的ping模块if ping_result==None: # 如果检测不在线的话,把ip,name,flag都是写入typeswap列表中flag='x'typleswap = [ip, ipname, flag]# writecsvfile(typleswap)else:flag = '√'typleswap = [ip, ipname, flag]writecsvfile(typleswap) # 调用下面的函数def writecsvfile(row):# rows = ['192.168.1.9', 'xx路口', ‘√’]# 写入数据,newline=" "是为了避免写入之后有空行with open('./destdata/result.csv','a+',newline='')as f:fcsv=csv.writer(f) # readee 自己的文件# fcsv.writerow(header) # 单行写入fcsv.writerow(row)def printjindu(response):"""打印一个正在检测的状态‘#’的数量代表着进度运行情况。:return:"""# print("#",end='')print("★",end='',flush=True)if __name__ == '__main__':start = time.time()print(" 2021-10-20...")print("IP 状态检测,请稍等...")print("==="*18)listall=readcsvfile() #获取所有的检测的IP的地址和名称信息的列表。with Pool(max_workers=10)as t: #多线程的调用for ipline in listall:task=t.submit(pinginfo,ipline)task.add_done_callback(printjindu) #这个是在多线程运行过程中,可以调用另外一个程序print("\n")print("检测完成,请在程序的destdata/result.csv文件下获取结果!")end = time.time()print("持续运行时间为:{}".format(end - start))time.sleep(100)
ping,python实现批量ping包工具--小案例v5阶段版本,可以使用了相关推荐
- python ping模块用法_使用Python实现批量ping操作方法
在日常的工作中,我们通常会有去探测目标主机是否存活的应用场景,单个的服务器主机可以通过计算机自带的DOS命令来执行,但是业务的存在往往不是单个存在的,通常都是需要去探测C段的主机(同一个网段下的存活主 ...
- python批量ping50台服务器_使用python编写批量ping主机脚本
通过使用python,编写脚本批量ping主机,验证主机是否处于活动状态 #!/usr/bin/python #auther: Jacky #date: 2016-08-01 #filename: p ...
- python爬虫基础17-抓包工具使用
01 抓包工具原理 HTTP 由于HTTP请求是没有加密的,也没有做任何验证,所以抓包工具直接将请求转发即可. HTTPS 由于HTTPS请求,客户端会使用服务端的证书来加密数据,而且会验证服务端是否 ...
- 『Python爬虫』抓包工具 Fiddler 入门教程
如今Python爬虫越来越火,有想学好Python爬虫的小伙伴可以前往gzh[Python编程学习圈]领取系统的学习资料以及教程视频,还分享有大量的技术干货文章可以阅读学习,欢迎大家关注学习. 传统的 ...
- 按键精灵,批量传包工具源码备份
// 获取当前路径 curDir = Plugin.Sys.GetDir(0) //curDir = "D:\sci\按键精灵\乐堂批量传包" curDir = Replace(c ...
- python程序实例教程基础-编程小案例
编程小案例 本小节实现一个通讯录管理程序,通过这个案例来融会贯通之前所学习的知识,该程序使用到如下知识点: 条件选择 循环 列表 字典 键盘输入 屏幕输出 编写程序 addr-manage.py 实现 ...
- python自动化办公 51cto_利用python实现批量自动化运维脚本案例
本文为通过密码或密钥实现python批量自动化运维脚本案例分享,是老男孩linux培训 python课程教学案例内容,后续会分享多线程并发执行这个脚本的更高级的功能(http://oldboy.blo ...
- java检测ping延迟_批量ping IP并检测IP延迟率和丢包率脚本
脚本文件如下: #!/bin/bash #Author:Mr.Ding #Created Time:2018-08-26 07:23:44 #Name:ping.sh #Description: sh ...
- 九十二、Python爬取深圳租房信息小案例
@Author:Runsen @Date:2020/6/19 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏 ...
- Python入门简单概念讲解及其小案例
列表 # 列表取出数据首字母大写(title函数) # bicycles = ['trek','cannondale','redline','specialized'] # print(bicycle ...
最新文章
- 为云服务立规矩——首批可信云服务认证名单公布
- jquery产品左右滚动js代码
- 简单工厂模式_计算器实现
- 【AR】开始使用Vuforia开发iOS(2)
- java什么叫内部对象,java – 函数对象的内部类中的变量/对象会发生什么?
- C#中Lock的秘密
- Sharepoin学习笔记—架构系列--08 Sharepoint的数据模型(DataModel)、数据管理(Data Management)与查询(Query System)
- 编译原理语法分析_斯坦福大学《编译原理》学习记录 - 第二章:语法分析器
- 那些公司用计算机仪表电缆,计算机及仪表用电缆技术
- 手机老显示存储空间不足该咋办?可删除哪些内容来增加存储空间?
- 非金钱激励员工的108种手段【转-摘】
- echo linux命令_Linux echo命令示例
- 3种实现CSS 上下居中的方法
- python画简便的图片-用python简单处理图片(5):图像直方图
- 计算机控制字如何使用,字由怎么用?一款软件管理1594种字体 很多设计大神都在用...
- java校验集装箱柜号是否正确
- 读书有益——》小朋友的诗(六)
- ||、、!的使用与区别
- 如何预防H1N1 - 来自医生的忠告
- AI开发基本流程介绍