TTL指的是一个网络层数据包(package)的生存周期.可以通过ping的回显TTL来大体判断一台机器是什么操作系统。(虽然可通过修改某些系统的网络参数来修改,不过很少对该值进行修改的) 以下脚本比较简单,必须在目标网段中的某一台机器上运行。具体如下: #!/bin/sh #检查整个网段主机系统linux/windows/网络设备 ip="192.168.113." LOG=/root/ip.log for i in `seq 1 254` do ping -c 2 $ip$i > $LOG okip=`cat $LOG | grep "ttl=" | awk -F'[: =]' '{print $4}'|sort |uniq` ttl=`cat $LOG | grep "ttl=" | awk -F'[: =]' '{print $9}'|sort |uniq` if [ $ttl -eq 64 ];then echo -e "\e[32mcheck $okip is linux主机\e[0m" elif [ $ttl -eq 128 ];then echo -e "\e[32mcheck $okip is windows主机\e[0m" else echo -e "\e[32mcheck $okip is VIP/网络设备/其他\e[0m" fi done 运行结果: ...... check 192.168.113.152 is linux主机 check 192.168.113.153 is linux主机 check 192.168.113.154 is windows主机 check 192.168.113.155 is linux主机 check 192.168.113.156 is windows主机 check 192.168.113.157 is windows主机 check 192.168.113.158 is linux主机 check 192.168.113.159 is linux主机 check 192.168.113.160 is VIP/网络设备/其他 check 192.168.113.161 is VIP/网络设备/其他 ....... (责任编辑:IT) |