Answers:
如果您使用的是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
)
)
)
)
软件包:xprobe'OR'xprobe2
描述:远程操作系统标识Xprobe2允许您确定远程主机上正在运行的操作系统。它将几个数据包发送到主机并分析返回的答案。Xprobe2的功能与nmap中的操作系统指纹功能相当。
示例:
$ 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/
老帖子,但我想我也会补充一点,如果设备启用了SNMP,您还可以查询sysDescr,它将告诉您正在使用的操作系统。
下载一个MIB浏览器,我在这里使用的是一个很好的浏览器:http : //www.ireasoning.com/downloadmibbrowserfree.php。您基本上可以给它提供设备的IP地址,然后执行步行操作。
遵循Johnathon64的建议,您可以使用SNMP直接在服务器上查询-假设远程服务器本身已配置为使用SNMP。您可以启动一个命令行查询,例如以下查询:
snmpget -v1 -c public <RemoteServerIP> sysDescr.0 | sed -n 's/.*STRING: //p' | tr -d \"
说明命令本身:
snmpget
将查询对象sysDescr,其中包含对象的默认名称。sed
将排除开始输出,该输出仅包含轮询的OID和字符串的开始。tr
将排除通常在SNMP查询中找到的所有双引号。最后两个命令仅用于格式化输出-如果您不需要它们,可以使用第一个命令提取完整的输出。