私はDjangoでいくつかのネットワークアプリを作成しようとしています.そして私が尋ねたいこと:サーバーが「nmap」でそれをスキャンするよりも、クライアントタイプのIPアドレスを次のようにすることは可能ですか?その後、結果がDjango アプリ、そして私はそれを使ってたくさんのことをしています。
それを作ることが可能かどうか知りたいだけですか、それともばかげているように聞こえますか?
私の提案は、次のようなものです。
pout,perr = subprocess.Popen(['nmap', '192.168.1.2', '-oX', '-'], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
xml_results = pout.read()
少しググると、いくつかの nmapXML -> Python dict スクリプトも浮かんでいます。
このアプローチには多少の問題があります - それはあまりうまくスケーリングしないため、単純なアプローチと呼ぶか、マシンが ping を実行せず、nmap がスロースキャンにフォールバックするようなものに対処します (状況によっては文字通り数時間かかる場合があります)。ターゲット ネットワーク)
nmap を非同期で実行し、ステータスをユーザーに返すことができるサーバーを作成することを検討してください。また、進行中のスキャンをキャンセルする機能も備えています。