コマンド(ICMPメッセージや別のプロトコルなど)を実行し、リモートマシン(自分のプライベートローカルネットワーク上ではない)から応答を取得し、メッセージを分析して、このマシンがWindowsまたはLinuxオペレーティングシステム?
IPv4ネットワークを使用している場合は、pingを使用してください。応答のTTL= 128の場合、ターゲットはおそらくWindowsを実行しています。TTLが64の場合、ターゲットは何らかのUnixのバリアントを実行しています。
: Presumes ping service enabled on Windows local and remote hosts
:
del _IX.txt, Windows.txt
ping -n 1 [computername|ipaddress] | findstr /i /c:"Reply" > ttl.txt
for /f "tokens=1-9* delims=:=< " %%a in (ttl.txt) do (
if %%i leq 130 (
if %%i geq 100 (
echo Windows & rem or echo %%c >> Windows.txt
) else (
if %%i equ 64 (
echo *IX & rem or echo %%c >> _IX.txt
)
)
)
)
移動する1つの方法は、 NMap を使用することです。応答から、リモートOSを推測できます。
パッケージ:xprobe 'OR' xprobe2
説明:リモートOSの識別Xprobe2を使用すると、リモートホストで実行されているオペレーティングシステムを特定できます。ホストにいくつかのパケットを送信し、返された回答を分析します。 Xprobe2の機能は、nmapのOSフィンガープリント機能に相当します。
例:
$ Sudo apt-get install xprobe
$ Sudo xprobe2 -T21-23,80,53,110 ###。###。###。###
参照:
http://www.sys-security.com/html/projects/X.html
http://sourceforge.net/projects/xprobe/
Johnathon64の提案に従って、リモートサーバー自体がSNMPを使用するように構成されている場合、SNMPを使用してサーバーに直接クエリを実行できます。これを行うには、次のようなコマンドラインクエリを起動します。
snmpget -v1 -c public <RemoteServerIP> sysDescr.0 | sed -n 's/.*STRING: //p' | tr -d \"
コマンド自体の説明:
snmpget
は、オブジェクトのデフォルト名を含むオブジェクトsysDescrをクエリします。sed
は、ポーリングされたOIDと文字列の先頭のみを含む最初の出力を除外します。tr
は、通常SNMPクエリにある二重引用符を除外します。最後の2つのコマンドは、出力をフォーマットするためのものです。必要がない場合は、最初のコマンドを使用して完全な出力を抽出できます。
古い投稿ですが、私もこれに追加すると思いましたが、デバイスでSNMPが有効になっている場合は、sysDescrを照会して、使用しているOSを通知することもできます。
MIBブラウザーをダウンロードします。私が使用する良いブラウザーはこちらです http://www.ireasoning.com/downloadmibbrowserfree.php 。基本的には、デバイスのIPアドレスを割り当てて、ウォーク操作を実行します。