php字符串aa_bb转换AaBb,字符串按位数分隔

该博客介绍了如何在Linux环境中将MAC地址从aabb-ccdd-eeff格式转换为aa:bb:cc:dd:ee:ff格式,以便进行IP查询。首先,通过sed命令替换MAC地址中的短横线,然后利用字符串切片技术将其分为六个部分,并用冒号连接,最终通过grep和arping结合查询对应的IP地址。此外,还提到了获取前一天日期的方法和检查参数是否为空的技巧。
摘要由CSDN通过智能技术生成

遇到一个实际的问题,通过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|tr a-z A-Z`

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”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值