码迷,mamicode.com
首页 > 其他好文 > 详细

字符串按位数分隔

时间:2016-01-10 17:14:40      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:shell   无分隔符字符串分隔   交换机mac地址转换   

    遇到一个实际的问题,通过mac地址查询ip。交换机上获取到的mac地址格式是这样的:aabb-ccdd-eeff,而通过arping获取到的mac地址格式为:aa:bb:cc:dd:ee:ff,查询的时候需要转换格式,步骤如下:

    1.将“-”符号替换为空

        real_mac=`echo $mac|sed "s/-//g"`

        得到real_mac=aabbccddeeff    

    2.将mac地址分为6个段

        mac1=${real_mac:0:2}

        mac2=${real_mac:2:2}

        mac3=${real_mac:4:2}

        mac4=${real_mac:6:2}

        mac5=${real_mac:8:2}

        mac6=${real_mac:10:2}

    3.转换为aa:bb:cc:dd:ee:ff格式

        transform_mac=`echo $mac1:$mac2:$mac3:$mac4:$mac5:$mac6`

全部代码如下:

#!/bin/bash

file=/srv/mac_search/record/`date -d "1 days ago" "+%Y-%m-%d"`.txt

ls $file &> /dev/null

if(($?!=0));then

        wget http://192.168.1.1/mac-search/`date -d "1 days ago" "+%Y-%m-%d"`.txt -O /srv/mac_search/record/`date -d "1 days ago" "+%Y-%m-%d"`.txt &> /dev/null

fi

real_mac=`echo $1|sed "s/-//g"|sed "s/://g"`

mac1=${real_mac:0:2}

mac2=${real_mac:2:2}

mac3=${real_mac:4:2}

mac4=${real_mac:6:2}

mac5=${real_mac:8:2}

mac6=${real_mac:10:2}

transform_mac=`echo $mac1:$mac2:$mac3:$mac4:$mac5:$mac6|sed "s/[a-z]/[A-Z]/g"`

ip=`grep $transform_mac $file|awk ‘{print $4}‘`

echo $ip

if [ -z "$ip" ];then

        echo "No IP matches this MAC"

fi

顺便提几点:

    1.获得前一天的日期

        date -d "1 days ago" "+%Y-%m-%d"`

        获得后一天的日期:"-1 days ago"

    2.判断参数是否为空值

        if [ -z "$ip" ]

        需要加双引号,不然会报错“binary operator expected”

本文出自 “我很简单” 博客,请务必保留此出处http://easyyx.blog.51cto.com/8603153/1733470

字符串按位数分隔

标签:shell   无分隔符字符串分隔   交换机mac地址转换   

原文地址:http://easyyx.blog.51cto.com/8603153/1733470

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!