【发布时间】:2021-06-24 01:52:55
【问题描述】:
如何通过 python 中的 url / 端口 ping 服务器,并以 ms(毫秒)接收响应?
晕头转向,用过tcping,也在研究socket,不过好像没那么简单,有什么tips吗?
pings_ookla_script_root-OK.py:
#!/usr/bin/env python3
import requests
import os
import sys
import pings
p = pings.Ping(quiet=False)
port = 8080
response = p.ping('google.com', times=4)
print(response)
输出:
47 bytes from 142.250.78.206: icmp_seq=0 ttl=114 time=11.326 ms
47 bytes from 142.250.78.206: icmp_seq=1 ttl=114 time=11.059 ms
47 bytes from 142.250.78.206: icmp_seq=2 ttl=114 time=10.793 ms
47 bytes from 142.250.78.206: icmp_seq=3 ttl=114 time=11.213 ms
--- google.com ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max = 10.793/11.098/11.326 ms
{'max_rtt': 11.325597763061523, 'min_rtt': 10.793447494506836, 'avg_rtt': 11.09778881072998, 'packet_lost': None, 'ret_code': 0, 'packet_size': 47, 'timeout ': 1000, 'dest': 'google.com', 'dest_ip': '142.250.78.206'}
【问题讨论】:
-
你没有
ping一个端口,你ping一个主机。 Ping 是在 Internet 层而不是在传输层定义的协议。见Internet protocol suite -
我认为
pings模块已经以毫秒为单位返回响应。看起来它在response.avg_rtt中。要摆脱其他输出,请执行p = pings.Ping(quiet=True),以便您更好地查看返回的内容和不返回的内容。 -
好的!但是我怎么知道我的服务器的响应时间呢?还有其他方法吗?我已经尝试过 tcping,但我无法进化,有什么提示吗?
-
如果你的服务器是在家里运行的,你得请朋友ping一下。否则你看不到它有多快。如果您有来自世界各地的朋友 ping 您的服务器,那就最好不过了。您还可以使用 v-server 或任何可以通过远程连接从其他地方运行 ping 命令的东西。另一方面,如今上传速度与下载速度相似。如果你在网络上 ping 一些东西,比如 google,你几乎得到了你的服务器的速度——目前是 11 毫秒。但其他大陆的客户可能要糟糕得多。这取决于客户的位置。
-
嗨areap-enap,感谢您的提示,但它是一个只能通过端口访问的Web 服务器,例如jardel.com:8080,我想知道它的响应时间。我通过zabbix得到这个答案,但我想通过python脚本找出答案