| okxjd |
|
|
Темы:
2
Сообщения:
14
Участник с: 31 мая 2009
|
Здравствуйте, у меня такая проблема: интернет-провайдер требует использования программы-авторизатора. Авторизатор написан на perl, и прекрасно работает в других дистрибутивах. А в Arch (i686, 2009.02-core) выдает сообщение “не могу вызвать метод opened неопределенного объекта $h в строке 84” (это вольный перевод). Вот часть кода авторизатора: #!/usr/bin/perl -w
#
#use strict;
use IO::Socket ();
use Digest::MD5 ();
use vars qw(%secret);
$| = 1;
my $PORT = 8899;
my $MIN_CHALLENGE_LENGTH = 32;
my $MAX_CHALLENGE_LENGTH = 64;
if ($#ARGV < 2 or ($ARGV[1] ne "1" and $ARGV[1] ne "2")) {
print "Usage: $0 password accesslevel gatewayaddress\n";
print " where access level is 1 or 2 -- internal and external traffic.\n";
die;
}
my $PASS = $ARGV[0];
my $ACCLEV = $ARGV[1];
my $GWADDR = $ARGV[2];
my $proto = "";
my $h = IO::Socket::INET->new('PeerAddr' => $GWADDR,
'PeerPort' => $PORT);
&read_handle(\$proto, 1);
...
...
sub read_handle {
my($ref, $len) = @_;
die "Socket closed.\n" if !$h->opened; ####### вот та строка, где появляется ошибка
my $recvlen = sysread($h, ${$ref}, $len);
die "Error reading socket.\n" if !defined($recvlen) or $recvlen != $len;
}perl /usr/bin/auth_client.pl 'пароль' 2 'ip-адрес' & При установке арча видел предупреждение, что структура каталогов perl была изменена, и какие-то команды приводились - может это быть причиной? Может быть модули какие-то найти не может? PS. В perl я практически полный ноль, с арчем раньше не сталкивался |
| tchgefest |
|
|
Темы:
51
Сообщения:
1505
Участник с: 20 октября 2008
|
Может попробовать поискать yaourt -Ss IO::Socket::INET Посмотреть установлен ли модуль этот И посмотрите что выдает perl -c ваш_файл.pl
Последний крик моды - эхо 30-летней давности.
|
| okxjd |
|
|
Темы:
2
Сообщения:
14
Участник с: 31 мая 2009
|
perl -c ваш_файл.pl пишет, что ошибок нет. А что это за команда - yaourt? У меня такой нет. Поискал на диске, в каталоге /usr/share/perl5/.. есть папка IO, в ней только один файл Z***.pm, ничего похожего на Socket там нет - это оно? Мне нужно ,значит, модуль Socket поставить? |
| exorcist |
|
|
Темы:
0
Сообщения:
26
Участник с: 24 мая 2008
|
в aur ищи perl-io-socket-inet6 2.56-2 и perl-digest-md5 1.8-1 |
| okxjd |
|
|
Темы:
2
Сообщения:
14
Участник с: 31 мая 2009
|
Спасибо, пока через vpn хожу. Теперь хотя бы не перегружаюсь каждый раз. Этот вопрос можно закрыть, дальше, думаю, сам разберусь. |