shell通过TTL返回值判断网段内主机操作系统,shellttl(虽然可通过修改某些


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/网络设备/其他


.......

相关内容

    暂无相关文章