Perl Net :: MA C :: OUI поставщика - PullRequest
1 голос
/ 07 мая 2020

Следующее - на MacOS High Sierra с Perl v5.28.2. Версия Net :: MA C :: Vendor - 1.265. Этакий повторяющийся пост. В моем предыдущем посте не хватало подробностей.

Я пытаюсь собрать сценарий для вывода списка IP-адресов, адресов MA C и поставщиков в сети. Функция Net :: MA C :: Vendor :: lookup, помимо прочего, возвращает ошибку тайм-аута. Я проверил несколько ссылок IEEE, которые должны были содержать данные OUI, но все они не возвращают никаких данных. Я видел несколько упоминаний о том, что этот файл можно найти в некоторых установках linux. Я выполняю поиск по всему миру и не нашел файла oui.txt в своей системе. Если бы я загрузил копию, я бы не знал, куда ее положить или как я мог бы воспользоваться функцией Net :: MA C :: Vendor, чтобы ее найти. Кроме того, если бы я нашел ссылку, я бы все равно не знал, как указать функцию поиска поставщика для ее использования.

Я получаю следующие ошибки:

Использование неинициализированного значения в конкатенации (.) или строку в /Users/{username}/perl5/perlbrew/perls/perl-5.28.2/lib/site_perl/5.28.2/Net/MAC/Vendor.pm, строка 320. Не удалось получить [ https://services13.ieee.org/RST/standards-ra-web/rest/assignments/download/?registry=MA-L&format=html&text=D8-D7-75] Сообщение о состоянии HTTP [] [Тайм-аут подключения] в строке 23 simplemacvendor.pl. Не удалось получить данные из IEEE! на simplemacvendor.pl строка 23.

The sample code:

    #!/usr/bin/perl;
    use strict;
    use feature qw(say);
    use Data::Dumper qw(Dumper);
    use Net::MAC::Vendor;

    open(ARP, "arp -na|") || die "Failed $!\n";
    my @arp_table;
    while (<ARP>) {
        if ($_ =~ m/incomplet/) {next;}
        if ($_ =~ m/Address/) {next;}
        my @line = split(' ',$_);
        my $computer = {};

        $line[1] =~ s/(\()([0-9\.]*)(\))/\2/;
        $computer->{ip} = $line[1];
        $computer->{mac}  = $line[3];
        $computer->{if}  = $line[5];

        say Dumper($computer);

    # Get vendor info
        my $vendor_info = Net::MAC::Vendor::lookup( $computer->{mac} ); # line 23
        $computer->{vendor} = $vendor_info->[0];
        push @arp_table , $computer;
    }

    print "ARP Table with vendors:\n";
    for my $i (0 .. $#arp_table) {
        print "$arp_table[$i]{ip}\t";
        print "$arp_table[$i]{if}\t";
        print "$arp_table[$i]{mac}\t";
        print "$arp_table[$i]{vendor}";
        print "\n";
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...