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