从日志中检查 MAC

Check MAC from log

我目前有一个检查 MAC 地址的脚本,tt 看起来像这样

  "m"|"-m" )
    if [ ! -n "" ]
    then
        echo "Enter MAC address"
        exit 0
    fi

     out1=`cat $dhcp_files/* | grep -i "" 2>/dev/null`
     ip=`cat $dhcp_files/* | grep -i "" | awk '{print }' | sed s/\;//g  2>/dev/null`
     out=` grep -i $ip $shapy/*  | awk '{print }'  2>/dev/null`
     echo -en ''$out1'  on  '$out'  \n'

这样做是这样的:./mac_check -m 00:00:00:00:00:00

此脚本的结果:

host Jon_Rosewelt_6_5 { hardware ethernet 00:1d:4e:b5:d4:10; fixed-address 192.168.101.19; }  on  eth4  

但我想对接收到任何形式的 mac 地址的脚本执行

又名。 ./check_mac -m 001d.4eb5.d410 **or** 001d4eb5d410 **or** 00-1d-4e-b5-d4-10

我该怎么做?

使用 GNU sed 和 Solaris sed:

echo 001d.4eb5.d410 | sed 's/[^0-9a-f]//g;s/../&:/g;s/:$//'
echo 001d4eb5d410 | sed 's/[^0-9a-f]//g;s/../&:/g;s/:$//'
echo 00-1d-4e-b5-d4-10 | sed 's/[^0-9a-f]//g;s/../&:/g;s/:$//'
echo 00:1d:4e:b5:d4:10 | sed 's/[^0-9a-f]//g;s/../&:/g;s/:$//'

输出:

00:1d:4e:b5:d4:10
00:1d:4e:b5:d4:10
00:1d:4e:b5:d4:10
00:1d:4e:b5:d4:10

使用您的代码:

"m"|"-m" )
  mac=""                                                       # added
  if [ ! -n "$mac" ]                                             # changed
  then
    echo "Enter MAC address"
    exit 0
  fi

   mac="$(echo "$mac" | sed 's/[^0-9a-f]//g;s/../&:/g;s/:$//')"  # added
   out1=`cat $dhcp_files/* | grep -i "$mac" 2>/dev/null`         # changed
   ip=`cat $dhcp_files/* | grep -i "$mac" | awk '{print }' | sed s/\;//g  2>/dev/null` # changed
   out=` grep -i $ip $shapy/*  | awk '{print }'  2>/dev/null`
   echo -en ''$out1'  on  '$out'  \n'