Сервер Debian «Пока не удается найти загружаемый объект» «Модуль обновлен» - PullRequest
1 голос
/ 10 июня 2011

Я пытаюсь запустить скрипт на сервере Debian, который использует модуль Net :: Pcap. Скрипт отлично работает на всех машинах, кроме этого сервера, который оказался единственным, на котором мне нужно работать.

После запуска скрипта я получаю общую фразу «Не удается найти загружаемый объект для модуля Net :: Pcap в @INC (путь .. и т. Д.)» *

Однако, когда я пытаюсь установить с помощью CPAN, я получаю сообщение «Net :: Pcap обновлен (0.16)».

Я вручную удалил Net :: Pcap из всех папок в @INC и переустановил их как вручную, так и через CPAN.

Кто-нибудь знает, в чем моя проблема?

Для чего это стоит, вот код:

    use Net::Pcap;
    use NetPacket::TCP;
    use NetPacket::IP;
    use NetPacket::Ethernet;
    use Net::PcapUtils;

    open (TXT, ">", "data.txt");
    Net::PcapUtils::loop(\&process_packet,SNAPLEN => 65536,PROMISC => 1, );

    sub process_packet {
      my($user_data, $header, $packet) = @_;
      my $tcp_obj = NetPacket::TCP->decode($packet);
      my $ip_obj = NetPacket::IP->decode($packet);
      my $len = length $packet;
      my $i=0;
      print TXT "From: "."$ip_obj->{src_ip}".":"."$tcp_obj->{src_port}\n";
      print TXT "To: "."$ip_obj->{dest_ip}".":"."$tcp_obj->{dest_port}\n";
      do {    
        my $lg = substr $packet, $i, 16;
        printf TXT "%.8X : ", $i;
        $i+=16;
        print TXT unpack ('H2'x16, $lg), '  'x(16-length $lg);
        $lg =~ s/[\x00-\x1F\xFF]/./g;
        print TXT " $lg\n";
        } until $i>=$len;
        print TXT "\n";
      }
   close (TXT);

Ответы [ 2 ]

3 голосов
/ 10 июня 2011

Может быть, вам не хватает родных библиотек.Попробуйте запустить от имени пользователя root:

apt-get install libnet-pcap-perl
1 голос
/ 30 ноября 2011

Опираясь на ответ jjmontes:

strace может быть очень полезным. Например, в этом случае вы могли бы запустить

strace perl -e 'use Net::Pcap'

У меня была похожая проблема сегодня, когда XSLoader не мог найти библиотеку для Moose (из-за устаревшего дескриптора файла NFS). Когда я увидел, что strace пытается открыть Moose.so по многим путям, но так и не нашел его, я смог обнаружить, что Moose.so либо отсутствует, либо не читается. Однако в strace может быть много шума, если вы не знаете, как его фильтровать.

...