Python 实现 Ping 功能(直接调用Windows 命令)

【生活经历分享】华师国培 华师伴学 合同都是坑 消费者付款后无法退款和华师国培签合同需小心,合同中都是保护华师的条款,没有保护消费者的条款。
收到钱,就算你因对培训质量不满意,也不能退款。因合同消费者维权肯定十分艰难。
华师伴学的授课方式是看录制的视频,不是真人现场教学。是否是您和孩子想要的学习方式?
各位打算报名的,交费要谨慎!
其他人在小红书上发的,转:

深圳市华师国培教育科技有限公司,黑心机构,大家擦亮眼睛,别被骗了,消费欺诈,虚假承诺,签合同各种坑,收到钱了不履行承诺不退款,乱扣费,维权艰难! - 小红书

 

 由于使用 Python Scapy 提供的功能实现 ping 一直无法 ping 通远程设备,见:https://www.cnblogs.com/91program/p/19143636

所以采用调用系统命令行的方式,发现是可以 ping 通的。

 

 1 # os_remote = sysPingOneAddress("172.20.3.34")
 2 
 3 class sysPingOneAddress(threading.Thread):
 4     def __init__(self, ipStr: str):
 5         super().__init__()
 6         self.setDaemon(True)
 7         self.running = None
 8         self.ipStr = ipStr
 9         self._stop_event = threading.Event()
10         self.start()
11 
12     @staticmethod
13     def os_ping(target_ip: str):
14         ret = True
15         import subprocess
16 
17         # 使用 subprocess.run() 执行 ping 命令
18         print(f"call system command: ping {target_ip}")
19         # -n 1 指定了发送 4 个 ICMP 回显请求(在Windows中是 -n 参数,而在Linux中是 -c)
20         result = subprocess.run(['ping', '-n', '4', target_ip], stdout=subprocess.PIPE, text=True)
21         # 打印输出结果
22         print(result.stdout)
23         if -1 != result.stdout.find("请求找不到主机") and -1 != result.stdout.find("无法访问目标主机"):
24             ret = False
25         if -1 != result.stdout.find("请求超时"):
26             ret = False
27 
28         return ret
29 
30     def run(self):
31         print(f"ping {self.ipStr} start...")
32         while self._stop_event:
33             time.sleep(6)
34             ret_val = sysPingOneAddress.os_ping(self.ipStr)
35 
36     def stop(self):
37         print("ping end.")
38         self.running = False  # 设置标志位为 False 来停止
39         self._stop_event.set()
40         self.join()

 

posted @ 2025-10-20 17:00  91program  阅读(8)  评论(0)    收藏  举报