《轻松学linux》第六课、让ip2addr支持域名


  • administrators

    grep介绍

    grep 是linux的文本查找命令,它可以查找特定关键字然后打印出此关键字所在行,所以它的输出都是以行为单位的。下面我来创建一个示例文件test

    www.52robot.org
    club.52robot.org
    52robot.org
    hi, 52robot
    Hello World!
    

    下面我们列出它常见的用法:

    查找含有52robot的行

    grep '52robot' test
    

    查找含有52robot并且以此为行首的行

    grep '^52robot' test
    

    查找含有52robot并且以此为行尾的行

    grep '52robot$' test
    

    查找不含有52robot的行

    grep -v '52robot' test
    

    awk和sed介绍

    awk和sed都是用于对行文本处理和替换的,下面我来个简单的例子:查找根分区的磁盘容量。

    df -h |grep '/$' |awk '{print $5}'
    

    而sed多用与文本替换处理,我们还是用test文件

    sed -i 's/52robot.org/test.com/g' test
    

    ip2addr改进

    我们要想让ip2addr支持域名和ip那么我们就要先检测输入的是ip还是域名,这里我们需要一个命令ipcalc,它是linux内置的ip校验工具。这样我们省去重复制作轮子的过程,下面贴代码:

    #!/bin/bash
    ipcalc -sc $1
    if [ $? == 0 ];then
        curl -s http://ip.taobao.com/service/getIpInfo.php?ip=$1|jq '.data.country + .data.region + .data.city'
    else
       ip_list=$(dig @223.5.5.5  $1|grep -v '^;'|grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}")
       for ip in $ip_list;do
           echo $ip $(curl -s http://ip.taobao.com/service/getIpInfo.php?ip=$ip|jq '.data.country + .data.region + .data.city')
       done
    fi
    

    其中dig命令需要先安装,命令如下:

    yum install -y bind-utils
    

    视频


登录后回复

Looks like your connection to 首页 was lost, please wait while we try to reconnect.