Перевод строк MAC адреса в десятичную форму

Модератор: Модераторы разделов

roleg
Сообщения: 38
ОС: ALT Linux 4

Перевод строк MAC адреса в десятичную форму

Сообщение roleg »

Вот собственно 2 строки (использовать BASH):

Нужно перевести каждую 16-тиричную групу в десятичную
например: 0:e0:4d:4:96:a7 в 0.224.77.4.150.167

вот примеры адресов

Код: Выделить всё

0:19:5b:87:2b:c3
0:19:e0:7a:a5:e2
0:18:f3:4d:f1:e5
0:e0:4d:4:96:a7
0:e0:4d:a:c:a9
0:1b:fc:34:c:c6
0:a:e6:62:ab:0


в програмном коде парсится файл с примерно 2 тысячами маков, если можно приведите ф-цию
Спасибо сказали:
roleg
Сообщения: 38
ОС: ALT Linux 4

Re: Перевод строк MAC адреса в десятичную форму

Сообщение roleg »

все, разобрался
решение в использовании sed и структуры let n1=0x$hehn
Спасибо сказали:
alfss
Сообщения: 262

Re: Перевод строк MAC адреса в десятичную форму

Сообщение alfss »

printf "%d:%d:%d:%d:%d:%d\n" `echo "00:1b:23:a3:24:1b" | sed 's/://g'|sed 's/\(..\)/0x\1 /g'`


http://linsovet.com/hex-ip-to-to-normal-view
Спасибо сказали:
roleg
Сообщения: 38
ОС: ALT Linux 4

Re: Перевод строк MAC адреса в десятичную форму

Сообщение roleg »

я так сделал:

Код: Выделить всё

#!/bin/bash
snmpwalk -v2c -c public $1 1.3.6.1.2.1.4.22.1.2 | awk '{print $1,$4}' > file
while read ip mac;do
ipn=`echo $ip | sed -e 's/.*192\.168\.\(\)/192\.168\.\1/i'`
macn=`echo $mac | sed -e 's/\(.*\)\:\(.*\)\:\(.*\)\:\(.*\)\:\(.*\)\:\(.*\)/\1 \2 \3 \4 \5 \6/i'`
let macn1=0x`echo $macn | awk '{print $1}'`
let macn2=0x`echo $macn | awk '{print $2}'`
let macn3=0x`echo $macn | awk '{print $3}'`
let macn4=0x`echo $macn | awk '{print $4}'`
let macn5=0x`echo $macn | awk '{print $5}'`
echo $ipn $macn1.$macn2.$macn3.$macn4.$macn5
done < file
Спасибо сказали:
roleg
Сообщения: 38
ОС: ALT Linux 4

Re: Перевод строк MAC адреса в десятичную форму

Сообщение roleg »

новая проблема, пишут:
Шаг 2. Назначить эту связку на порт 1: snmpset -v2c -c private 192.168.0.1 1.3.6.1.4.1.171.11.64.1.2.7.2.1.4.192.168.0.100 x 80000000
80000000 -> Порт 1
8 -> 1000 (двоичный код) -> 1000 1 = порт 1 000 = порт 2 – порт 4


я так понял если знаю порт, например 17 то мне нужно пометить 17-й бит и перевести с двоичной в десятичную а потом поместить число в старшый разряд и добавить нулей :) omg!
разработчики dlink потеряли разум.. как это на bash-е можно организовать?

свитч 26 портовый, выберу 17 порт
00000000010000000000000000 -> 65536 -> 65536000
получается

Код: Выделить всё

snmpset -v2c -c private 192.168.0.1 1.3.6.1.4.1.171.11.64.1.2.7.2.1.4.192.168.0.100 x 65536000
Спасибо сказали: