python - 使用 Python 在未经授权的主机上难以实现 ping/延迟功能
问题描述
我制作了一个 web 应用程序(python/django),它 ping 不同的服务器并返回 ping 值。这是链接。
它有一个 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/延迟,以便我的代码正常工作。(任何与代码重写或库使用相关的建议表示赞赏)
解决方案
似乎 ping 存在与之相关的潜在安全问题,因此 PythonAnywhere 不允许您运行它。但是你可以弹出类似的东西
time nc -zw400 <host> <port>
(对命令使用 bash shell time
)获取延迟统计信息
推荐阅读
- css - 全尺寸屏幕的CSS Z-index问题
- google-apps-script - 有没有办法获取当前使用电子表格的人的电子邮件地址?
- json - python 3 json解析特定键返回错误
- wordpress - 如何将多个产品添加到 WooCommerce 分组产品?帮助一家小型英国非营利组织
- r - 纠正时间序列中的连续错误
- javascript - Need help for javascript. Values and numbers in particular
- java - How is the Stage instantiated in this JavaFX sample code?
- r - 如何从每个人的计数中计算各种概率
- angular - 使用 formControlName 时不显示选择中的占位符
- android - Android 应用程序卡视图的帧速率问题