如何在Django中使用Python库?

0 投票
1 回答
808 浏览
提问于 2025-04-18 12:08

我想执行一些命令,并把它们的输出结果显示或处理到一个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操作。

你可以对其他命令做类似的处理。

撰写回答