以下脚本需要安装nbtscan这个工具来实现,在IP地址难统计\MAC地址难统计的可以发挥点作用。唯一的缺点就是遇到一些强的防火墙时,无法通过主机名来获取IP及MAC地址。

生成的IP及MAC地址可以用于做动态的透明防火墙时使用;该脚本可能没有什么实际用途,权当自己练习shell了。

 
  
  1. #!/bin/bash  
  2. #this script will auto getip and auto control   
  3. #made by cheng  
  4. #ctime:2011/02/17  
  5. #version: 1  
  6. #mail:chen_baocheng@ryoyo.com.cn  
  7.  
  8. if [ ! -d  /etc/tcp_control ];then  
  9.     mkdir /etc/tcp_control  
  10. fi  
  11. #mkdir /usr/local/nbtscan  
  12. #tar -xzf ./nbtscan-source-1.0.35.gz -C /usr/local/nbtscan  
  13. #cd /usr/local/nbtscan && make  
  14. #nb=/usr/local/nbtscan  
  15. nb=/root/nb  
  16. nbstat=/etc/tcp_control/nbstat  
  17. conf=/etc/tcp_control  
  18. ip_table=/etc/tcp_control/ip_table   
  19.  
  20. #edit files  
  21. $nb/nbtscan 192.168.10.0/24 -m > $conf/nbstat && \  
  22. sed -i -e "s/WORKGROUP\\\//g"  -i -e "s/RYOYO\\\//g" \  
  23. -i -e "s/MSHOME\\\//g"  -i -e "s/\\\//g" $conf/nbstat && \  
  24. sed -i "/ERR/d" /ip_table && awk -F " " '{print $1 "     " $2 "     " $3}' $conf/nbstat > $conf/ip_table  
  25. test -e $conf/ip_control2 || touch $conf/ip_control2 && :> $conf/ip_control2  
  26. test -e $conf/mac_control || touch $conf/mac_control   
  27. test -e $conf/mac_control2 || touch $conf/mac_control2 && :> $conf/mac_control2  
  28. :> $conf/mac_control  
  29.  
  30. #creat ip_table(version2) and mac_control(version2)  
  31. for i in $(cat /etc/tcp_control/pcname)  
  32. do  
  33. cat $conf/ip_table | grep $i | awk -F " " '{print $1}' | sort | uniq >> $conf/ip_control2  
  34. cat $conf/ip_table | grep $i | awk -F " " '{print $3}' | sort | uniq >> $conf/mac_control2  
  35. done   
  36.  
  37. #file comparison;system will auto cp file  
  38. if [ -f $conf/ip_control ];then  
  39.     a=`diff $conf/ip_control  $conf/ip_control2 && echo 0 || echo 1`  
  40.     if [ "$a" != "0" ];then  
  41.         cp -f $conf/ip_control2 $conf/ip_control  
  42.     fi  
  43. else  
  44.     touch $conf/ip_control  
  45. fi  
  46.  
  47. #creat mac_table  
  48. if [ -f $conf/mac_control ];then  
  49.     a=`diff $conf/mac_control  $conf/mac_control2 && echo 0 || echo 1`  
  50.     if [ "$a" != "0" ];then  
  51.         cp -f $conf/mac_control2 $conf/mac_control  
  52.     fi  
  53. fi  
  54.  
  55.    
  56.  

生成的结果是ip_control 这个是正在使用的表,比如iptables调用了里面的IP。 ip_control2 则是最新的IP表,两个表如果不一样,ip_control2将替换ip_control

本来该脚本后面是接了一堆iptables的规则,以便于做动态的或是MAC控制。但因其使用条件有限,不再列出。

> 代表的是导出符号,博客上显示不了大于符号.