pythonPython

【干货】用Python教你写一个批量ping

2021-03-20  本文已影响0人  点滴技术

用Python教你写一个批量ping

[TOC]

前言

最近几天,刚好需要配合防火墙替换的割接方案,需要去批量ping测试20+个C类网段,约5000+个地址,我同事在网上找的工具也不能很好的一次性ping完所有网段的IP地址,心想,我来帮你搞定,就花些时间劈里啪啦的调试下代码,其中还是遇到一些疑难杂症的,比如下所列:

想要写一个批量的ping脚本,首先需要厘清下编写的思路,要怎么去实现?

这是我整理的思路,我会一步一步教大家怎么去实现,咋们接着往下看...

实验环境

备注:没啥特别的要求。

代码分解

如何读取文本中的所有网段?

说明:通过上下文管理with读取文本中的所有IP网段信息

假如你把收集的所有IP网段都集中放到了一个文本当中,那么我们在执行脚本的时候,怎么把它提取出来呢?

# 存放ip网段的文本路径(当前目录)
IP_INFO_PATH = 'IPnet.cfg'
# 以只读权限打开文本
with open(IP_INFO_PATH, 'r') as f:
    # for循环遍历每一行
    for line in f.readlines():
        #去掉前后空白字符
        line = line.strip()
        # 忽略空白行或注释行
        if ( len(line) == 1 or line.startswith('#') ):
            continue
        print(line)

执行结果如下所示:

192.168.100.0/24
192.168.101.0/24
192.168.102.0/24
192.168.103.0/24
192.168.104.0/24

代码解释:

如何获取网段的主机地址?

说明:该模块我以前有详细写过,请在公众号搜索<用Python帮你实现IP子网计算>

如何执行ping程序?

subprocess是一个内置模块,它可以让你创建一个新的子程序来运行。通常使用如下3个方法:

这里,我只介绍简单好用的run()方法就够满足我们的需求了。

代码执行完成后自动创建了文件,这里就不把贴出来了,自行打开文本进行验证。

完整代码

okay, 本章就先介绍这么多了,相信大家有了一个清晰的思路了,再把各个模块ipaddresssubprocessmultiprocessing都熟悉一边,实操干起来,我相信大家能够胜任,并在此基础上更新迭代,写出更好、更优雅的代码,咋们下次见。

码字不易,如觉得本文章有用,请动动手指给个爱心、分享给有需要的朋友拉,多谢各位,晚安。


如果喜欢的我的文章,欢迎关注我的公号:点滴技术,扫码关注,不定期分享

上一篇下一篇

猜你喜欢

热点阅读