Python:用pythonping处理ping

简介:ping (Packet Internet Groper)是一种因特网包探索器,用于测试网络连接量的程序 。Ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令, 主要是向特定的目的主机发送 ICMP(Internet Control Message Protocol 因特网报文控制协议)Echo 请求报文,测试目的站是否可达及了解其有关状态。ping用于确定本地主机是否能与另一台主机成功交换(发送与接收)数据包,再根据返回的信息,就可以推断TCP/IP参数是否设置正确,以及运行是否正常、网络是否通畅等。

历史攻略:

Python:subprocess模块

Ping命令可以进行以下操作:

1、通过将ICMP(Internet控制消息协议)回显数据包发送到计算机并侦听回显回复数据包来验证与一台或多台远程计算机的连接。

2、每个发送的数据包最多等待一秒。

3、打印已传输和接收的数据包数。

需要注意的是,Ping成功并不一定就代表TCP/IP配置正确,有可能还要执行大量的本地主机与远程主机的数据包交换,才能确信TCP/IP配置的正确性。如果执行ping成功而网络仍无法使用,那么问题很可能出在网络系统的软件配置方面,ping成功只保证当前主机与目的主机间存在一条连通的物理路径。

安装:

pip install pythonping

案例源码1:os模块的下ping的方式,易造成执行堵塞,并且提取比较繁琐。

# -*- coding: utf-8 -*-
# time: 2022/7/31 11:26
# file: main.py
# 公众号: 玩转测试开发
import os
cmd = "ping www.baidu.com"
message = os.system(cmd)
print("*" * 100)
print(message)

案例源码2:pythonping模块处理ping,无堵塞现象,并且易于提取。

# -*- coding: utf-8 -*-
# time: 2022/11/18 11:26
# file: ping-demo.py
# 公众号: 玩转测试开发
from pythonping import ping
from colorama import Fore, Back, Style


def check_online(ip: str):
    message = ping(ip)
    print(message)
    success_ping = "Reply"
    if success_ping in str(message):
        print(Fore.GREEN + Style.BRIGHT + f"localhost to - {ip} Success.")
    else:
        print(Fore.RED + Style.BRIGHT + f"localhost to - {ip} Fail.")


if __name__ == '__main__':
    check_online("14.215.177.39")
    print(Style.RESET_ALL)
    check_online("111.112.113.114")

执行2结果:

Python:用pythonping处理ping_第1张图片

即:通过pythonping的结果有2个,通: 回复字节 Reply bytes,不通:请求超时 Request timed out,来快速判断ping的结果,从而快速得到结果。

你可能感兴趣的:(Python学习,python,网络,开发语言)