nmap を使用して定期的に ping スキャンを実行し、ネットワークに現れたりドロップしたりするホストを検出するものを構築したいと考えています。Ruby の nmap 出力を読み取る簡単な方法はありますか? 私の好みは、サードパーティのライブラリを避けることです。
どうもありがとう!
nmap を使用して定期的に ping スキャンを実行し、ネットワークに現れたりドロップしたりするホストを検出するものを構築したいと考えています。Ruby の nmap 出力を読み取る簡単な方法はありますか? 私の好みは、サードパーティのライブラリを避けることです。
どうもありがとう!
Nmap のテキスト出力を解析しようとするのは、間違った方法です。フォーマットは過去に何度も変更されており、将来も確実に変更されます。-oX
これを行う適切な方法は、引数で生成された Nmap の XML 出力を解析することです。このために設計された Ruby ライブラリがすでにいくつかあります (Chris Gates がブログでこのアプローチについて説明しています)。Nokogiriは、Ruby の非常に優れた XML 解析ライブラリです。
コマンドの周りにバッククォートを使用するだけで、出力を変数としてキャプチャできることを学びました。
test = nmap -sP 192.168.1.0/24
p'test:' puts test.split( "\ n")
完璧に動作しているようです。ただし、bonsaivikingが指摘しているように、nmapのXML機能を調査することをお勧めします。
次のようなことを試すことができます:
require 'open3'
stdin, stdout, stderr = Open3.popen3('nmap -sP 192.168.1.0/24')
次に、stdout と stderr を解析し、標準の Ruby を使用して必要なものを取得できます。