编写shell脚本程序到grep IP (从给定的列表中),并在网络中搜索它所属的IP。然后,如果IP属于沃达丰、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描述
描述:全球移动运营商
描述: AIRTEL-NETWORK
描述: VODAFONE-NETWORK
我们可以修改更多吗?我们可以包含IF语句来分离vodafone等,以将它们包含在一个文件中吗?
或者请提到一个比我的更好的脚本?
敬请指教!
发布于 2011-12-08 21:06:18
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可能需要您进行一些思考。
我希望这能帮到你。
https://stackoverflow.com/questions/8431166
复制相似问题