Страница 1 из 1

Посодействуйте скриптом для поиска одинакового текста

Добавлено: 2010-12-16 15:00:13
InventoR
Юзаю Openvz и бывает ситуация когда маки начинают пересекатся.
если сделать так:

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

grep -r 'mac' /etc/vz/conf
можно получить

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

./121.conf:NETIF="ifname=eth0,mac=00:18:51:23:9E:B3,host_ifname=veth121.0,host_mac=00:18:51:E1:A5:51,bridge=vmbr0"
./101.conf:NETIF="ifname=eth0,mac=00:18:51:1C:67:42,host_ifname=veth101.0,host_mac=00:18:51:F5:63:28,bridge=vmbr0"
./151.conf:NETIF="ifname=eth0,mac=00:18:51:AE:93:C1,host_ifname=veth555.0,host_mac=00:18:51:5A:EC:85,bridge=vmbr1"
./106.conf:NETIF="ifname=eth0,mac=00:18:51:FE:3B:14,host_ifname=veth106.0,host_mac=00:18:51:D1:76:D2,bridge=vmbr0"
./555.conf:NETIF="ifname=eth0,mac=00:18:51:AE:93:C1,host_ifname=veth555.0,host_mac=00:18:51:5A:EC:85,bridge=vmbr1"
./111.conf:NETIF="ifname=eth0,mac=00:18:51:20:60:D4,host_ifname=veth111.0,host_mac=00:18:51:4E:5A:24,bridge=vmbr1"
./108.conf:NETIF="ifname=eth0,mac=00:18:51:22:A8:2B,host_ifname=veth108.0,host_mac=00:18:51:65:AD:AF,bridge=vmbr1"
./126.conf:NETIF="ifname=eth0,mac=00:18:51:93:2A:0A,host_ifname=veth126.0,host_mac=00:18:51:77:D4:1B,bridge=vmbr0"
./102.conf:NETIF="ifname=eth0,mac=00:18:51:F6:85:E5,host_ifname=veth102.0,host_mac=00:18:51:99:49:34,bridge=vmbr0"
./103.conf:NETIF="ifname=eth0,mac=00:18:51:68:07:A0,host_ifname=veth103.0,host_mac=00:18:51:8F:1E:19,bridge=vmbr0"
./104.conf:NETIF="ifname=eth0,mac=00:18:51:30:42:9C,host_ifname=veth104.0,host_mac=00:18:51:E0:BD:5B,bridge=vmbr0"
./107.conf:NETIF="ifname=eth0,mac=00:18:51:76:76:92,host_ifname=veth107.0,host_mac=00:18:51:BA:2A:EA,bridge=vmbr1"
./110.conf:NETIF="ifname=eth0,mac=00:18:51:F6:85:E5,host_ifname=veth102.0,host_mac=00:18:51:99:49:34,bridge=vmbr0"
это все загоняется в файл + добавляется пара маков с бриджовых интерфейсов.
и теперь надо сделать так чтобы в этом файле найти все одинаковые маки или может у кого есть решение по проще, по способствуйте плиз.

Re: Посодействуйте скриптом для поиска одинакового текста

Добавлено: 2010-12-16 15:04:24
Гость
привиди пример того как должен бы был сработать такой поиск по тексту который ты привел выше
а то ничерта не понятно

Re: Посодействуйте скриптом для поиска одинакового текста

Добавлено: 2010-12-16 15:21:23
InventoR
да без разницы, главное чтобы вывел сообщение или еще что-то, что есть несколько одинаковых маков которые пересекаются.

Re: Посодействуйте скриптом для поиска одинакового текста

Добавлено: 2010-12-16 15:29:47
Гость
я спросил
как дубляжи сравнивать
два мака в одной строке
или любой мак из одной строки что идет первым
из другими маками с первой позиии любой строки вверх или низ

Re: Посодействуйте скриптом для поиска одинакового текста

Добавлено: 2010-12-16 17:03:18
InventoR
любые маки из данного текста, то есть и по горизонтали и по вертикали и по диагонале.

Re: Посодействуйте скриптом для поиска одинакового текста

Добавлено: 2010-12-16 21:03:16
ProFTP
точно найти одинаковые, повторяющиеся маки? а что с ними дальше делать?

Re: Посодействуйте скриптом для поиска одинакового текста

Добавлено: 2010-12-16 21:32:45
InventoR
а дальше ручками буду разгребать и менять их.

Re: Посодействуйте скриптом для поиска одинакового текста

Добавлено: 2010-12-16 21:54:10
ProFTP
mac.txt

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

/121.conf:NETIF="ifname=eth0,mac=00:18:51:23:9E:B3,host_ifname=veth121.0,host_mac=00:18:51:E1:A5:51,bridge=vmbr0"
./101.conf:NETIF="ifname=eth0,mac=00:18:51:1C:67:42,host_ifname=veth101.0,host_mac=00:18:51:F5:63:28,bridge=vmbr0"
./151.conf:NETIF="ifname=eth0,mac=00:18:51:AE:93:C1,host_ifname=veth555.0,host_mac=00:18:51:5A:EC:85,bridge=vmbr1"
./106.conf:NETIF="ifname=eth0,mac=00:18:51:FE:3B:14,host_ifname=veth106.0,host_mac=00:18:51:D1:76:D2,bridge=vmbr0"
./555.conf:NETIF="ifname=eth0,mac=00:18:51:AE:93:C1,host_ifname=veth555.0,host_mac=00:18:51:5A:EC:85,bridge=vmbr1"
./111.conf:NETIF="ifname=eth0,mac=00:18:51:20:60:D4,host_ifname=veth111.0,host_mac=00:18:51:4E:5A:24,bridge=vmbr1"
./108.conf:NETIF="ifname=eth0,mac=00:18:51:22:A8:2B,host_ifname=veth108.0,host_mac=00:18:51:65:AD:AF,bridge=vmbr1"
./126.conf:NETIF="ifname=eth0,mac=00:18:51:93:2A:0A,host_ifname=veth126.0,host_mac=00:18:51:77:D4:1B,bridge=vmbr0"
./102.conf:NETIF="ifname=eth0,mac=00:18:51:F6:85:E5,host_ifname=veth102.0,host_mac=00:18:51:99:49:34,bridge=vmbr0"
./103.conf:NETIF="ifname=eth0,mac=00:18:51:68:07:A0,host_ifname=veth103.0,host_mac=00:18:51:8F:1E:19,bridge=vmbr0"
./104.conf:NETIF="ifname=eth0,mac=00:18:51:30:42:9C,host_ifname=veth104.0,host_mac=00:18:51:E0:BD:5B,bridge=vmbr0"
./107.conf:NETIF="ifname=eth0,mac=00:18:51:76:76:92,host_ifname=veth107.0,host_mac=00:18:51:BA:2A:EA,bridge=vmbr1"
./110.conf:NETIF="ifname=eth0,mac=00:18:51:F6:85:E5,host_ifname=veth102.0,host_mac=00:18:51:99:49:34,bridge=vmbr0"

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

perl -MData::Dumper -0x0a -lne '$hash->{$1}++ while $_ =~ /(((?:(\d{1,2}|[a-fA-F]{1,2}){2})(?::|-*)){6})/smg; END { print Dumper $hash }' maс.txt

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

$VAR1 = {
          '00:18:51:93:2A:0A' => 1,
          '00:18:51:1C:67:42' => 1,
          '00:18:51:FE:3B:14' => 1,
          '00:18:51:99:49:34' => 2,
          '00:18:51:65:AD:AF' => 1,
          '00:18:51:F5:63:28' => 1,
          '00:18:51:BA:2A:EA' => 1,
          '00:18:51:F6:85:E5' => 2,
          '00:18:51:4E:5A:24' => 1,
          '00:18:51:76:76:92' => 1,
          '00:18:51:E0:BD:5B' => 1,
          '00:18:51:E1:A5:51' => 1,
          '00:18:51:D1:76:D2' => 1,
          '00:18:51:30:42:9C' => 1,
          '00:18:51:AE:93:C1' => 2,
          '00:18:51:77:D4:1B' => 1,
          '00:18:51:8F:1E:19' => 1,
          '00:18:51:23:9E:B3' => 1,
          '00:18:51:5A:EC:85' => 2,
          '00:18:51:22:A8:2B' => 1,
          '00:18:51:20:60:D4' => 1,
          '00:18:51:68:07:A0' => 1
        };
там где больше 1, то повторяются

регулярное выражение для MAC адреса тут: http://www.perlmonks.org/?node_id=83405

Re: Посодействуйте скриптом для поиска одинакового текста

Добавлено: 2010-12-16 22:00:04
InventoR
пасибо огромнейшее.

Re: Посодействуйте скриптом для поиска одинакового текста

Добавлено: 2011-02-23 15:30:11
kpp
Перл - сильная штука, но ей пока не владею ;)
Практики ради предлагаю на тест скрипт на шелле, точнее awk.

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

#!/bin/sh
#
# mac_dowbl.sh

awk 'BEGIN {FS=","}
     {est=0;
      for(mac in mac_uniq)
      { mac_curr=substr($2,5);
       if (mac_curr==mac){est=1; mac_dowbl[mac_curr]++;}
      };
      if(est==0){mac_uniq[mac_curr]++};
     }
     END { for(mac in mac_dowbl) print mac,mac_dowbl[mac] }
     ' $1
На выходе получаем список (пример) повторяющихся маков и кол-во их повторений:

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

00:18:51:F6:85:E5 2
00:18:51:AE:93:C1 1

Re: Посодействуйте скриптом для поиска одинакового текста

Добавлено: 2011-02-24 14:26:17
kpp
Можно проще:

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

awk -F ',' '{print substr($2,5)}' $1 | sort | uniq -c
на выходе список всех маков и их кол-во, где больше 1-го - есть дубляж;
или

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

awk -F ',' '{print substr($2,5)}' $1 | sort | uniq -d
На выходе только маки, имеющие дубляжи.