我制作了一个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'不会退出。 我不能执行以下操作:
安装fping或ping(我在服务器上没有root权限)
不能使用pyping(需要root来创建原始套接字)
不能使用ping / fping可执行文件(需要root权限)
不能使用http.connnection.request或类似内容(我需要确切的ping值;不需要有关服务器启动或关闭的信息)
所以我的问题是在这种情况下如何获得ping /等待时间,以便我的代码起作用。 (感谢与代码重用或库使用有关的任何建议)
答案 0 :(得分:0)
似乎ping有潜在的安全问题,因此PythonAnywhere不允许您运行它。但是您可以弹出
之类的内容time nc -zw400 <host> <port>
(对time
命令使用bash shell)以获取延迟统计信息