我想执行各种命令并显示/处理他们的输出到Django模板。例如:如何在django中使用python库?
- 我想ping主机(或IP)并查看它是否处于活动状态/已打开。然后在HTML页面上显示“ONLINE”
- 我想执行一个whois到一个域,抓住所有者的国家,并将其显示在页面上
- 我想执行nslookup或nmap并从输出中解析几件事
我正在寻找的所有东西都是一个想法。我卡在我的import subprocess
里面views.py,不知道如何继续下去。我应该如何继续?
我想执行各种命令并显示/处理他们的输出到Django模板。例如:如何在django中使用python库?
我正在寻找的所有东西都是一个想法。我卡在我的import subprocess
里面views.py,不知道如何继续下去。我应该如何继续?
从Django视图ping通的linux主机:
import subprocess
def view(request):
try:
subprocess.check_call(['ping', '-c', '1', "1.2.3.4"])
except subprocess.CalledProcessError:
host_online = False
else:
host_online = True
return render(request, "template.html", {'online': host_online,})
这将运行命令ping -c 1 1.2.3.4
这将尝试一次只ping主机。如果成功,ping
将返回代码0,如果不成功则返回1。 subprocess.check_call(...)
将1或0转换为异常或无异常(分别)。
该解决方案将导致页面加载在ping过程中被阻止,如果主机实际上处于关闭状态,则该过程将持续几秒钟。如果这是一个问题,请考虑将ping放入通过AJAX从页面请求的视图中,一旦它加载完毕。
您可以为其他命令做类似的事情。
“CalledProcessError”怎么样?我收到一条错误消息。 – Radolino
请不要发布未经测试的代码。你错过了'CalledProcessError'的输入,IP地址后面的一个右括号']','host_online'总是'False',... –
对不起,实际上没有试过这个代码,我*认为*我的编辑将解决你的问题。如果不是,我会在不使用手机时正确尝试! –
确实很难分辨问题出在哪里。如果你想使用一个库,你可以导入它并使用它,就像任何代码一样。你的困惑在哪里? –