python学习:通过python实现快速ping
Posted 弯月楼主
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习:通过python实现快速ping相关的知识,希望对你有一定的参考价值。
记得之前有一个windows下的小工具,可以实现快速ping,用户只需要输入起始IP和结束IP,程序就可以对这个范围内的IP进行ping检测。
刚学习python,就拿这个例子练练,下面是代码:
#导入pythoning的模块
from pythonping import ping
#导入datetime模块来保存检查的日期
from datetime import datetime
#获取当前的日期和具体时间
now = datetime.now()
date = "%s-%s-%s" % (now.year, now.month, now.day)
time = "%s:%s:%s" % (now.hour, now.minute, now.second)
test_time = date + " " + time
#打印当前时间,这条可以不用,只是在运行的时候显示。
print(test_time)
#使用追加读写的方式创建一个以日期命名的文件,方便每日检查
ping_test_file = open(date + ".txt", "a")
#在文件中首先写入检查的具体时间
ping_test_file.write("测试时间: " + test_time + "\\n")
#请输入起启始IP地址:
ip_start = input("请输入起始IP地址:")
#对输入的IP地址进行分割
ip_start_num = ip_start.split(".")
#请输入起结束IP地址:
ip_end = input("请输入结束IP地址:")
#对输入的IP地址进行分割
ip_end_num = ip_end.split(".")
#获取IP地址网络号
ip_network = ip_start_num[0] + "." + ip_start_num[1] + "." + ip_start_num[2] + "."
#定义变量统计存活主机数
num_active_host = 0
#通过for循环遍历每台设备的IP地址
for i in range(int(ip_start_num[3]),int(ip_end_num[3])+1):
ip = ip_network + str(i)
ping_result = ping(ip)
#如果能够ping通,返回值内有Reply这个字符串,失败时则没有。通过这个判断测试的结果
if "Reply" in str(ping_result):
print(ip + " is reachable.")
num_active_host = num_active_host + 1
ping_test_file.write(ip + "\\n")
else:
print(ip + " is not reachable.")
ping_test_file.write("快速PING检测存活主机总数为:" + str(num_active_host) + "台" + "\\n")
ping_test_file.close()
在这里主要使用了pythonping这个模块,默认是不带这个模块的,可以通过pip进行安装。
运行代码如下图所示:
我是在PyCharm中运行的,直接输入起始IP和结束IP,屏幕上会有测试结果,同时在python文件的同目录下会生成一个以日期命名的文本文件:
打开文件会看到此次测试的结果:
说明:
该程序设计的比较简单,只能测试同网段范围内的IP连通性,并且没有对输入的IP地址进行有效性检测,只是实现一个小功能。
以上是关于python学习:通过python实现快速ping的主要内容,如果未能解决你的问题,请参考以下文章