写一个shell脚本来grep IP并显示它属于谁?

时间:2011-12-08 12:44:04

标签: bash shell

编写一个shell脚本程序来grep IP(从给定的列表中)并在网络中搜索它所属的IP。然后,如果IP属于vodafone,telstra,airtel,则将它们分别写入每个运营商的文件中。

所以我写的脚本应该是:

for ip_address in `cat ip_address_list`;  
do  
whois $ip_address | grep 'descr' >> final_result 
done  

输出如下:

$] whois 62.87.90.54 | grep descr
descr:全球移动运营商
descr:AIRTEL-NETWORK
descr:VODAFONE-NETWORK

我们可以更多地修改它吗?我们可以包含IF语句来分离沃达丰等,将它们包含在文件中吗?

或者请提一个比我好的剧本?

请指教!

1 个答案:

答案 0 :(得分:1)

for ip_address in $(cat ip_address_list); do  
    whois $ip_address | grep 'descr' \
    | while read line ; do
      case "${line}" in 
         *GLOBAL\ MOBILE\ OPERATOR* )
            printf "${line}\n" >> gmo
          ;;
         *AIRTEL-NETWORK* )
            printf "${line}\n" >> air
          ;;
         *VODAFONE-NETWORK* )
            printf "${line}\n" >> voda
          ;;
         * )
            printf "${line}\n" >> all_others 
          ;;
        esac
      done
done  

请注意,在case语句中,您需要转义匹配目标中的任何空格,即*GLOBAL\ MOBILE\ OPERATOR*

另外,我现在没办法测试这个,所以希望没有太多的语法错误:-)。如果您确实发现了问题,请尝试设置聊天。

而且,如果你确定whois每个请求只产生一行输出,你可能不需要while循环。 whois $ip | read line ; case "${line}" ....可能有用。

实际上管理不断增加的文件,air, voda, gmo可能需要您考虑一下。

我希望这会有所帮助。