The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Извлечение mac адресов из dhcpd.conf"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Извлечение mac адресов из dhcpd.conf"  +/
Сообщение от AimCube (ok) on 14-Дек-10, 15:15 
В dhcpd.conf есть несколько записей вида

subnet 192.168.7.0 netmask 255.255.255.0 {
        option subnet-mask 255.255.255.0;
        option routers 192.168.7.62;
        option broadcast-address 192.168.7.255;

    host ws-07-01 {
        hardware ethernet 00:00:66:00:6c:00;
        fixed-address 192.168.7.1;
    }
    host ws-07-02 {
        hardware ethernet 00:00:66:00:6c:01;
        fixed-address 192.168.7.2;
    }
    host ws-07-03 {
        hardware ethernet 00:00:66:00:6c:02;
        fixed-address 192.168.7.3;
    }
...
    host ws-07-12 {
        hardware ethernet 00:00:66:00:b0:01;
        fixed-address 192.168.7.12;
    }
    range 192.168.7.32 192.168.7.60;
}

при заданной группе машин (например ws-07) надо получить список mac адресов. А точнее по очереди писать их в  переменную. Это регуляркой надо делать или можно как то более продуктивно?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Извлечение mac адресов из dhcpd.conf"  +1 +/
Сообщение от phpcoder email(ok) on 14-Дек-10, 15:31 
> при заданной группе машин (например ws-07) надо получить список mac адресов. А
> точнее по очереди писать их в  переменную. Это регуляркой надо
> делать или можно как то более продуктивно?

coder@xxx$ fgrep -B1 ethernet dns.txt | paste - - - | awk '{print $2, " -> ", $6}'
ws-07-01  ->  00:00:66:00:6c:00;
ws-07-02  ->  00:00:66:00:6c:01;
ws-07-03  ->  00:00:66:00:6c:02;
ws-07-12  ->  00:00:66:00:b0:01;

А дальше как душе твоей угодно -- можно циклом в while read их читать, ну или прям awk-ом и обрабатывать. (Не очень понял, что ты хочешь в итоге получить, так что и ответ не очень точный.)

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Извлечение mac адресов из dhcpd.conf"  +/
Сообщение от AimCube (ok) on 14-Дек-10, 15:56 
>(Не очень понял,
> что ты хочешь в итоге получить, так что и ответ не
> очень точный.)

В итоге из записей вида

subnet 192.168.1.0 netmask 255.255.255.0 {
        option subnet-mask 255.255.255.0;
        option routers 192.168.1.62;
        option broadcast-address 192.168.1.255;

    host ws-01-01 {
        hardware ethernet 00:19:66:f1:6c:5e;
        fixed-address 192.168.1.1;
    
.....
    }
    range 192.168.1.32 192.168.1.60;

subnet 192.168.7.0 netmask 255.255.255.0 {
        option subnet-mask 255.255.255.0;
        option routers 192.168.7.62;
        option broadcast-address 192.168.7.255;

    host ws-07-01 {
        hardware ethernet 00:19:66:f1:6c:5e;
        fixed-address 192.168.7.1;
    
.....
    }
    range 192.168.7.32 192.168.7.60;

subnet 192.168.8.0 netmask 255.255.255.0 {
        option subnet-mask 255.255.255.0;
        option routers 192.168.8.62;
        option broadcast-address 192.168.8.255;

    host ws-08-01 {
        hardware ethernet 00:19:66:f1:6c:5e;
        fixed-address 192.168.8.1;
    
.....
    }
    range 192.168.7.32 192.168.8.60;
Надо вырвать мак адреса определённых подсетей, точнее по очереди писать их в переменнную.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Извлечение mac адресов из dhcpd.conf"  +1 +/
Сообщение от phpcoder email(ok) on 14-Дек-10, 16:00 
> Надо вырвать мак адреса определённых подсетей

К сожалению, я мало шарю в сетях и dhcp, но неплохо пишу на шелле. Так что либо жди пока поможет кто-нибудь более продвинутый, либо покажи что ты в итоге хочешь получить (какие строчки, слова тебе нужно "выдернуть" и в каком виде).


Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Извлечение mac адресов из dhcpd.conf"  +/
Сообщение от AimCube (ok) on 14-Дек-10, 16:05 
Вообщем есть запись вида:
hardware ethernet 00:19:66:f1:6c:5e;
        fixed-address 192.168.7.1
надо найти mac адрес который стоит перед fixed-address 192.168.7.1(т.е. мы должны получить в этом случае 00:19:66:f1:6c:5e), потом  найти какой мак адрес стоит перед fixed-address 192.168.7.2 и так до конца файла.
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Извлечение mac адресов из dhcpd.conf"  +2 +/
Сообщение от phpcoder email(ok) on 14-Дек-10, 18:41 
> Вообщем есть запись вида:
> hardware ethernet 00:19:66:f1:6c:5e;
>         fixed-address 192.168.7.1
> надо найти mac адрес который стоит перед fixed-address 192.168.7.1(т.е. мы должны получить
> в этом случае 00:19:66:f1:6c:5e), потом  найти какой мак адрес стоит
> перед fixed-address 192.168.7.2 и так до конца файла.

Ну так аналогично же:

[c0der@rock ~]$ fgrep -B1 fixed-address dns.txt | paste - - - | awk '{print $3, " -> ", $5}'
00:00:66:00:6c:00;  ->  192.168.7.1;
00:00:66:00:6c:01;  ->  192.168.7.2;
00:00:66:00:6c:02;  ->  192.168.7.3;
00:00:66:00:b0:01;  ->  192.168.7.12;

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Извлечение mac адресов из dhcpd.conf"  +/
Сообщение от AimCube (ok) on 14-Дек-10, 19:37 
Прошу прощения за этот ахтунг, но должно получится что то вида

i=0
while $i<255 do
ifmac=fgrep -B1 "fixed-address 192.168.7."$i dns.txt | paste - - - | awk '{print $3, " -> ", $5}'
print $ifmac
$i=$i+1
done

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Извлечение mac адресов из dhcpd.conf"  +/
Сообщение от phpcoder email(ok) on 14-Дек-10, 19:38 
> Прошу прощения за этот ахтунг, но должно получится что то вида

Что это?! Точнее так: что вы хотите сделать?


Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Извлечение mac адресов из dhcpd.conf"  +/
Сообщение от AimCube (ok) on 14-Дек-10, 19:44 
>> Прошу прощения за этот ахтунг, но должно получится что то вида
> Что это?! Точнее так: что вы хотите сделать?

i=0
while $i<255 do
ifmac=fgrep -B1 "fixed-address 192.168.7."$i dns.txt | paste - - - | awk '{print $3, " -> ", $5}'
print $ifmac
$i=$i+1
done

А, ступил сори.
Вообщем надо загнать мак адрес переменную и каждую итерацию выполнять wol переменная

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Извлечение mac адресов из dhcpd.conf"  +1 +/
Сообщение от phpcoder email(ok) on 14-Дек-10, 19:51 
Попробуйте так?:

i = 0
while [ $i -le 255 ]; do
    ip="192.168.7.$i"
    mac=$(fgrep -B1 "fixed-address $ip" dns.txt | paste - - - | awk '{print $3}')
    i = $(expr $i + 1)
    echo "IP: $ip with MAC $mac"
done

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Извлечение mac адресов из dhcpd.conf"  +1 +/
Сообщение от AimCube (ok) on 14-Дек-10, 21:29 
> Попробуйте так?:
> i = 0
> while [ $i -le 255 ]; do
>     ip="192.168.7.$i"
>     mac=$(fgrep -B1 "fixed-address $ip" dns.txt | paste -
> - - | awk '{print $3}')
>     i = $(expr $i + 1)
>     echo "IP: $ip with MAC $mac"
> done

То, что надо, спасибо!

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "Извлечение mac адресов из dhcpd.conf"  +/
Сообщение от AimCube (ok) on 14-Дек-10, 21:30 
>> Попробуйте так?:
>> i = 0
>> while [ $i -le 255 ]; do
>>     ip="192.168.7.$i"
>>     mac=$(fgrep -B1 "fixed-address $ip" dns.txt | paste -
>> - - | awk '{print $3}')
>>     i = $(expr $i + 1)
>>     echo "IP: $ip with MAC $mac"
>> done
> То, что надо, спасибо!

Только бы ещё от точки с запятой в конце мака избавиться...

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "Извлечение mac адресов из dhcpd.conf"  +1 +/
Сообщение от phpcoder email(ok) on 14-Дек-10, 21:35 
> Только бы ещё от точки с запятой в конце мака избавиться...

AimCube, ну неужели это так сложно для вас?..

Например, так:
mac=$(fgrep -B1 "fixed-address $ip" dns.txt | paste - - - | awk '{print $3}' | sed 's|;$||')

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "Извлечение mac адресов из dhcpd.conf"  +/
Сообщение от AimCube (ok) on 14-Дек-10, 22:12 
>> Только бы ещё от точки с запятой в конце мака избавиться...
> AimCube, ну неужели это так сложно для вас?..
> Например, так:
> mac=$(fgrep -B1 "fixed-address $ip" dns.txt | paste - - - | awk
> '{print $3}' | sed 's|;$||')

Сори, первый раз пытаюсь на баше што то избразить, спасибо огромное

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "Извлечение mac адресов из dhcpd.conf"  +/
Сообщение от Pahanivo (ok) on 15-Дек-10, 09:45 
перловые регулярки нормально парсят многострочный текст
Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру