编写一个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语句来分离沃达丰等,将它们包含在文件中吗?
或者请提一个比我好的剧本?
请指教!
答案 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
可能需要您考虑一下。
我希望这会有所帮助。