我想执行各种命令并将其输出显示/处理到django模板。例如:
我所寻找的只是一种思考的心态。我被困在views {py里面import subprocess
的地方,不知道怎么回事。我该怎么办?
答案 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请求的视图中。
你可以为其他命令做类似的事情。