一、适用场景¶
1.1 通过ping测试前三位相同IP主机的联通性¶
二、实验准备¶
2.1 需要下载Python的第三方模块¶
2.1.1 Windows系统¶
2.1.1.1 同时按'window键'和'R'键并输入'cmd'进入命令行视图¶
2.1.1.2 执行命令'pip install pythonping'下载第三方模块pythonping¶
2.1.2 Linux系统¶
2.1.2.1 执行命令'pip3.8 install pythonping'下载第三方模块pythonping¶
三、万能脚本(多线程)¶
#coding = utf-8
#通过import语句引入os、ping、threading、time、IPy模块
import IPy
import os
from pythonping import ping
import threading
import time
#调用os模块中的方法os.path.exists()来判断名为reachable_ip.txt的文件是否存在
if os.path.exists('reachable_ip.txt'):
#若存在则调用os模块中的方法os.remove()删除
os.remove('reachable_ip.txt')
#提示用户输入IP的前24位
top_three_ip = input("Please input the ip's top three ip! ")
#创建函数say_after(ip),并赋予一个形参'ip'
def say_after(ip):
#将ping完地址的结果赋值给变量ping_result
ping_result=ping(ip)
#以附加的模式打开名为reachable_ip.txt的文件
f=open('reachable_ip.txt', 'a')
#如果ping完地址的结果包含字符串'Reply'则打印提示目的可达信息并把ping的地址记录下来
if 'Reply' in str(ping_result):
print(f"{ip} is reachable.")
f.write(ip + "\n")
#如果ping完地址的结果不包含字符串'Reply'则打印提示目的不可达信息
else:
print(f"{ip} is unreachable.")
#打印开始信息包含时间
print(f"程序于{time.strftime('%X')}开始执行\n")
#创建一个空列表,用于添加线程
threads = []
#调用range()函数创建一个整个网段所有地址的列表
last_octet = range(1,255)
#将列表中元素一一赋值给变量ip4
for ip4 in range(1,255):
#每次创建一个完整地址
ip = top_three_ip + str(ip4)
#调用threading模块中的Thread函数为say_after(ip)函数创建一个线程并将它赋值给变量t,这里Thread函数的target参数对应的是函数名称,args对应的是say_after(ip)函数的参数
t = threading.Thread(target=say_after,args=(ip))
#将线程一一添加到名为threads的列表中
threads.append(t)
#调用threading模块中的start()启动刚刚创建的线程
t.start()
#使用for循环语句一一提取线程
for thread in threads:
#调用threading模块中的join()强制阻塞调用它的线程,直到该线程运行结束或终止
thread.join()
#定义名为list1的新列表
list1 = []
#以只读的形式打开名为'reachable_ip.txt'的文本文件
f = open('reachable_ip.txt','r')
#使用for循环语句读取文本文件中每一行的内容,进行空白行处理并将其添加到列表末尾
for line in f.readlines():
lines = line.strip()
list1.append(lines)
#对列表中的元素处理并利用sorted()函数进行排序处理
new_list1=sorted(list1,key=lambda x:IPy.IP(x).int())
#关闭名为'reachable_ip.txt'的文本文件
f.close()
#打开名为'reachable_ip.txt'的文本文件并取别名为X,将处理后列表元素一行一行写入该文件中,不用文件时自动关闭
with open('reachable_ip.txt','w') as X:
for i in new_list1:
X.write(i + "\n")
#打印程序结束信息包含结束时间
print(f"\n程序于{time.strftime('%X')}执行结束。")
四、不同操作系统执行脚本¶
4.1 Windows系统¶
4.1.1 IDLE环境执行脚本¶


4.1.1.1 执行成功后会在当前目录生成一个reachable_ip的文本文件¶
4.1.2 cmd环境执行脚本¶
4.1.2.1 同时按'window键'和'R'键并输入'cmd'进入命令行视图¶
4.1.2.2 执行命令'cd C:\Users\zq\Desktop'进入脚本所在文件夹¶
4.1.2.3 执行命令'python pythonping3.py'¶
4.1.2.4 执行成功后会在当前目录生成一个reachable_ip的文本文件¶
4.2 Linux系统¶
4.2.1 创建名为pythonping3.py的脚本文件¶

4.2.2 在脚本所在目录下执行命令'python3.8 pythonping3.py'¶
