我想執行各種命令並顯示/處理他們的輸出到Django模板。例如:如何在django中使用python庫?
- 我想ping主機(或IP)並查看它是否處於活動狀態/已打開。然後在HTML頁面上顯示「ONLINE」
- 我想執行一個whois到一個域,抓住所有者的國家,並將其顯示在頁面上
- 我想執行nslookup或nmap並從輸出中解析幾件事
我正在尋找的所有東西都是一個想法。我卡在我的import subprocess
裏面views.py,不知道如何繼續下去。我應該如何繼續?
我想執行各種命令並顯示/處理他們的輸出到Django模板。例如:如何在django中使用python庫?
我正在尋找的所有東西都是一個想法。我卡在我的import subprocess
裏面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 -c 1 1.2.3.4
這將嘗試一次只ping主機。如果成功,ping
將返回代碼0,如果不成功則返回1。 subprocess.check_call(...)
將1或0轉換爲異常或無異常(分別)。
該解決方案將導致頁面加載在ping過程中被阻止,如果主機實際上處於關閉狀態,則該過程將持續幾秒鐘。如果這是一個問題,請考慮將ping放入通過AJAX從頁面請求的視圖中,一旦它加載完畢。
您可以爲其他命令做類似的事情。
「CalledProcessError」怎麼樣?我收到一條錯誤消息。 – Radolino
請不要發佈未經測試的代碼。你錯過了'CalledProcessError'的輸入,IP地址後面的一個右括號']','host_online'總是'False',... –
對不起,實際上沒有試過這個代碼,我*認爲*我的編輯將解決你的問題。如果不是,我會在不使用手機時正確嘗試! –
確實很難分辨問題出在哪裏。如果你想使用一個庫,你可以導入它並使用它,就像任何代碼一樣。你的困惑在哪裏? –