我如何在django中使用python库?

时间:2014-07-04 16:06:35

标签: python django python-3.x subprocess

我想执行各种命令并将其输出显示/处理到django模板。例如:

  • 我想ping一个主机(或IP),看看它是否处于活动/开启状态。然后在html页面上显示“ONLINE”
  • 我想对域名执行whois,抓住所有者的国家/地区并在页面上显示
  • 我想执行nslookup或nmap并从输出中解析几件事

我所寻找的只是一种思考的心态。我被困在views {py里面import subprocess的地方,不知道怎么回事。我该怎么办?

1 个答案:

答案 0 :(得分:1)

从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请求的视图中。

你可以为其他命令做类似的事情。