使用Python在未优先处理的主机上难以实现ping /延迟功能

时间:2018-11-26 03:56:57

标签: python django linux pythonanywhere

我制作了一个Web应用程序(python / django),可对其他服务器执行ping操作并返回ping值。 这是Link

它具有pingserver(ip,sev)函数,该函数使用os / system fping(可与/ bin / ping一起使用)获取输出,并剥离以获取值。

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)

它在我的本地服务器上可以正常工作,但是该代码在托管计算机上不起作用,因为'/ bin / fping'不会退出。 我不能执行以下操作:

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

  2. 不能使用pyping(需要root来创建原始套接字)

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

  4. 不能使用http.connnection.request或类似内容(我需要确切的ping值;不需要有关服务器启动或关闭的信息)

所以我的问题是在这种情况下如何获得ping /等待时间,以便我的代码起作用。 (感谢与代码重用或库使用有关的任何建议)

1 个答案:

答案 0 :(得分:0)

似乎ping有潜在的安全问题,因此PythonAnywhere不允许您运行它。但是您可以弹出

之类的内容
time nc -zw400 <host> <port>

(对time命令使用bash shell)以获取延​​迟统计信息