如何在django中使用python库?

如何在django中使用python库?,python,django,python-3.x,subprocess,Python,Django,Python 3.x,Subprocess,我想执行各种命令,并将其输出显示/处理为django模板。例如: 我想ping主机(或IP)并查看它是否处于活动/打开状态。然后在html页面上显示“在线” 我想对一个域执行whois,获取所有者的国家并将其显示在页面上 我希望执行nslookup或nmap,并从输出中解析一些内容 我所寻找的只是一种思考的心态。我被困在导入子流程inside views.py中,不知道如何继续。如何继续?从Django视图ping linux上的主机: import subprocess def view

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

  • 我想ping主机(或IP)并查看它是否处于活动/打开状态。然后在html页面上显示“在线”
  • 我想对一个域执行whois,获取所有者的国家并将其显示在页面上
  • 我希望执行nslookup或nmap,并从输出中解析一些内容

我所寻找的只是一种思考的心态。我被困在
导入子流程
inside 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-c1 1.2.3.4
,该命令将仅尝试ping主机一次<代码>ping将退出,如果成功,返回代码为0,如果未成功,返回代码为1<代码>子流程。检查调用(…)将1或0分别转换为异常或无异常

此解决方案将导致页面加载在ping过程中暂停,如果主机确实关闭,这将需要几秒钟。如果这是一个问题,请考虑将ping放在一个视图中,该视图是在加载后通过Ajax从页面请求的。
您可以对其他命令执行类似的操作。

很难说问题出在哪里。如果您想使用一个库,您可以导入它并使用它,就像任何代码一样。你的困惑在哪里?那“呼叫处理错误”呢?我收到一条错误消息。请不要发布未经测试的代码。您缺少导入被称为
的进程错误
,IP地址后的右括号
]
主机联机
将始终是
错误
,…抱歉,实际上没有尝试代码,我想我的编辑会解决您遇到的问题。如果没有,我会在不使用手机的时候试一下!这是难以置信的(对我来说),它真的有效!我还将尝试使用ajax请求。如果您想在另一个例子中解析whois的国家,该怎么办?有几种方法可以在python中解析whois。一种方法是采用类似的方法并与
output=subprocess一起使用。我也会为ping建议这种方法,但是1。从纯python ping需要根特权和2。您在问题中询问了子流程。