首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >编写一个shell脚本到grep IP并显示它属于谁?

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

Stack Overflow用户
提问于 2011-12-08 20:44:04
回答 1查看 2.4K关注 0票数 1

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

所以我写的脚本应该是这样的:

代码语言:javascript
复制
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等,以将它们包含在一个文件中吗?

或者请提到一个比我的更好的脚本?

敬请指教!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-08 21:06:18

代码语言:javascript
复制
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可能需要您进行一些思考。

我希望这能帮到你。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8431166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档