web-dev-qa-db-ja.com

リモートホストがWindowsまたはSambaを実行しているかどうかを検出します

Linuxサーバーから、リモートマシンがWindowsとSambaのどちらを実行しているかをすばやく判断するにはどうすればよいですか?

リモートのWindowsマシン(XPおよび7)でコマンドを実行して、インストールされているソフトウェアとバージョンを一覧表示したいと思います。そして、これらのコマンドをLinuxサーバーから実行したいと思います( winexe を使用)。

Windowsホストを見つけるには、次のnmapコマンドを使用します。

nmap -oG - -T4 -p T:445 192.168.1.0/24 | awk '{print $2, $3}'

ただし、すべてのSambaサーバーといくつかのプリンターも入手できます。

追加のnmapオプションまたは別のコマンドを使用して、実際のWindowsマシンのみを取得し、無関係なWindowsコマンドをWindows以外のサーバーおよびデバイスに送信しないようにする簡単な方法はありますか?

更新:

私はpferateの提案に従い、-Oを使用しました。遅くて信頼性が低いと思ったので試していませんでしたが、この状況ではうまく機能します。私は今これを使って実際のWindowsマシンを検出しています:

nmap -oG - -T4 -p T:445 -O --max-os-tries 1 192.168.1.0/24 | grep '445/open/.* Windows' | awk '{print $2, $3}'
2
mivk

NmapのOS検出オプション-Oを使用してみることができます。

nmap -O Host

ホストのOS StringまたはServer Stringを確認することもできます。変更することはできますが、Sambaのデフォルトのサーバー文字列はSamba Server Version %vです。すべてのバリアントでWindowsのデフォルトのサーバー文字列が何であるかはわかりませんが、Win7SP1ではWindows 7 Professional 6.1があります。

私のLinuxSambaサーバーでは、OS文字列はUnixであり、Win7SP1ではWindows 7 Professional 7601 Service Pack 1です。

$ smbclient -L Host

Domain=[MYDOMAIN] OS=[Unix] Server=[Samba x.y.z]

        Sharename       Type      Comment
        ---------       ----      -------

これらの値は変更できるため、完全に信頼することはできません。しかし、それはあなたにいくつかの最初の洞察を与えることができます。

2
pferate