LINUX.ORG.RU

Преобразовать mac адрес

 , ,


1

2

При использовании binary-to-ascii в isc-dhcp-server, mac адрес получаем мы такой: 8:0:27:54:e:c8. Как его можно преобразовать в 08:00:27:54:0e:c8.

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

https://kb.isc.org/article/AA-01039/0/Formatting-MAC-addresses-in-dhcpd-or-wh...

 set foo = concat (
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,1,1))),2), ":",
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,2,1))),2), ":",
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,3,1))),2), ":",
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,4,1))),2), ":",
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,5,1))),2), ":",
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,6,1))),2)
);

Smola
()
Ответ на: комментарий от Smola

спасибо. А я когда ждал ответ, набросал:

#!/bin/bash

INPUT=$1

PARSE=$(echo $INPUT|tr ':' ' ')
TMP=/tmp/mac

for a in $PARSE
do
        P0=$(echo -n $a|wc -c)
        if [ "$P0" == '2' ]
        then
                echo $a >>$TMP
        else
                echo $a|sed 's/0/00/'|sed 's/1/01/'|sed 's/2/02/'|sed 's/3/03/' \
                |sed 's/4/04/'|sed 's/5/05/'|sed 's/6/06/'|sed 's/7/07/'|sed 's/8/08/' \
                |sed 's/9/09/'|sed 's/a/0a/'|sed 's/b/0b/'|sed 's/c/0c/'|sed 's/d/0d/' \
                |sed 's/e/0e/'|sed 's/f/0f/' >>$TMP
        fi

done

OUT=$(cat $TMP)
echo $OUT|tr ' ' ':'
rm $TMP
ne-vlezay ★★★★★
() автор топика
Ответ на: комментарий от ne-vlezay
$ echo 8:0:27:54:e:c8 | awk -F: -v OFS=: '{ for (i = 0; i < NF; i++) if (length($i) == 1) $i = "0" $i } 1'
08:00:27:54:0e:c8
unterwulf
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.