Назад | Перейти на главную страницу

Определить, работает ли удаленный хост под 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?

Обновить:

Я последовал предложению Пферата и использовал -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 для обнаружения ОС, -O.

nmap -O host

Вы также можете попробовать посмотреть на OS String или Server String для хозяина. Хотя это можно изменить, строка сервера по умолчанию для Samba Samba Server Version %v. Я не уверен, какая строка сервера по умолчанию в Windows используется для всех вариантов, но на Win7 SP1 у меня есть Windows 7 Professional 6.1.

На моем сервере Linux Samba строка ОС Unix а на Win7 SP1 это Windows 7 Professional 7601 Service Pack 1.

$ smbclient -L host

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

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

Поскольку эти значения можно изменить, нельзя полностью доверять этому; но это может дать вам некоторое первоначальное представление.