如何在Django中使用Python库?
我想执行一些命令,并把它们的输出结果显示或处理到一个Django模板里。例如:
- 我想对一个主机(或者IP地址)进行ping测试,看看它是否在线。如果在线的话,就在网页上显示“在线”。
- 我想对一个域名执行whois查询,获取这个域名所有者的国家,并把这个信息显示在网页上。
- 我想执行nslookup或者nmap,并从输出结果中提取一些信息。
我现在只是在寻找一种思路来解决这个问题。我在views.py里使用了import subprocess
,但不知道接下来该怎么做。接下来我该如何继续呢?
1 个回答
1
在Django的视图中从Linux上对一个主机进行ping操作:
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成功,ping
会返回0;如果失败,则返回1。subprocess.check_call(...)
会把这个1或0转化为异常或没有异常(分别对应)。
使用这种方法时,页面加载会被ping操作拖慢,如果主机确实无法连接,可能会等几秒钟。如果这样会造成问题,可以考虑在页面加载完成后,通过AJAX请求来进行ping操作。
你可以对其他命令做类似的处理。