linux - 从日志中检查MAC

标签 linux macos bash mac-address

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

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

     out1=`cat $dhcp_files/* | grep -i "$2" 2>/dev/null`
     ip=`cat $dhcp_files/* | grep -i "$2" | awk '{print $8}' | sed s/\;//g  2>/dev/null`
     out=` grep -i $ip $shapy/*  | awk '{print $8}'  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 **或** 001d4eb5d410 **或** 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

With your code:

"m"|"-m" )
  mac="$2"                                                       # 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 $8}' | sed s/\;//g  2>/dev/null` # changed
   out=` grep -i $ip $shapy/*  | awk '{print $8}'  2>/dev/null`
   echo -en ''$out1'  on  '$out'  \n'

关于linux - 从日志中检查MAC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32156729/

相关文章:

linux tty端口一打开就自发发送数据

ios - UIScreen.mainScreen.scale 在 NSScreen 上

linux - Whiptail 没有运行我的 bash 命令

c - 通过串行端口发送文件

c++ - Sqlite3 和 pthread,双重释放或损坏(出)

macos - 从沙盒应用程序锁定 macbook 屏幕

swift - 卡特琳娜测试版 5 : Quicktime Audio Recording Not Working on 2018 Macbook Pros sw

string - 寻找 echo{,} foo 的分割

linux - 如何使用 find 更改文件和目录名称?

linux - 为什么从服务器不能在 PVM(并行虚拟机)中工作