当前位置: > shell编程 >

shell通过TTL返回值判断网段内主机操作系统

时间:2014-04-29 00:12来源:linux.it.net.cn 作者:IT网
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)
------分隔线----------------------------
栏目列表
推荐内容