很难用Python在未受攻击的主机上实现ping/延迟功能

2024-04-24 22:08:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我制作了一个webapp(python/django),它ping不同的服务器并返回ping值。 这是Link。你知道吗

它有一个pingserver(ip,sev)函数,它使用os/system fping(可以与/bin/ping一起使用)来获取输出,并使用strip来获取值。你知道吗

def pingserver(ip,sev):
    ping_response = subprocess.Popen(["/usr/bin/fping","-c1","-t400",ip], stdout=subprocess.PIPE).stdout.read()
    latency = str(ping_response)
    ping_value=latency.split('ms')[0].split(',')[-1]
    if len(ping_value) <= 3:
        return(sev,'unknown')
    else:
        return(sev,ping_value)

它在我的localserver中运行良好,但代码在托管计算机中不工作,因为“/bin/fping”不退出。 我无法做到以下几点:

  1. 安装fping或ping(我在服务器上没有root权限)

  2. 无法使用pyping(创建原始套接字需要根)

  3. 无法使用ping/fping可执行文件(需要root权限)

  4. 无法使用http.CONNECTION.request请求或类似的(我需要确切的ping值;而不是服务器启动或关闭的信息)

所以我的问题是在这种情况下如何获得ping/延迟,以便我的代码能够正常工作。 (如有任何与代码重设或图书馆使用有关的建议,我们将不胜感激)


Tags: 代码ip服务器returnbinvalueresponsestdout