Доброго времени суток.... есть проблема написал свой редиректор на Perl дал нужные права на выполнение... но есть странность скрипт выполняется указанное количество раз в настройках сквида, выполняет все как положенно и зависает.. не возвращаясь в начало...пример скрипта
ladp_connect.pl :
[::code::]
#!/usr/bin/perl
system("echo run_script >> /home/http/redir.log");
use strict;
use Net::LDAP;
$0='redirect';
$|=1;
while(<>)
{
my @al_data = split;
my $url=$al_data[0];
my $ipaddr = $al_data[1];
my $clr_ipaddr = substr($ipaddr,0,length($ipaddr)-2);
my $cmd = "nslookup ".$clr_ipaddr." 10.32.12.1";
my @result_cmd = `$cmd`;
my $out_res = $result_cmd[3];
my $ind_1 = index($out_res,"name =",0)+7;
my $str_1 = substr($out_res,$ind_1,255);
my $ind_2 = index($str_1,".hostappr",0);
my $sub_2 = substr($str_1,0,$ind_2);my $cn_host = $sub_2;
system("echo ipaddr : $clr_ipaddr url : $url address $sub_2 >> /home/http/redir.log");
if(length($cn_host) > 0)
{
my $ldap_server="10.32.12.1";
my $base='ou=WS_restricted,ou=mufldr,dc=myfrm,dc=mydomname,dc=com';
my $pwd="password";
my $ldap = Net::LDAP->new($ldap_server) or die "$@";
my $mesg = $ldap->bind("cn=Mimik,OU=Users,OU=myfldr,DC=myfrm,DC=mydomname,DC=com",password =>$pwd) ;
die "Error: ",$mesg->error if ($mesg->is_error);
$mesg = $ldap->search ( filter=>"(cn=$cn_host)",base => $base );
$mesg->code && die $mesg->error;
($mesg->count != 1) && die "More than one user with uid ?!?!?";my $max = $mesg->count;
my $entry = ();
for( my $index = 0; $index < $max; $index++)
{
$entry = $mesg->entry($index);
}my $entr = $entry->get_value('description');
if($entr != "")
{
system("echo $entr $cn_host $url >> /home/http/redir.log");
print;
}
else
{
system("echo not logged to ldap ".$entr." $url >> /home/http/redir.log");
}
$ldap->unbind;
}
}
[::code::]в настройках сквида редиректор запускается 10 раз
скажите что я делаю не так о_О
насколько я помню, в настройках сквида редиректор запускается указанным количеством экземпляров, и для обработки используется очередной свободный экземпляр ...
.
а сам редиректор должен в цикле принимать запрос, обрабатывать и выкатывать результат, не завершаясь, но ожидая очередного запроса
.
удачи
>насколько я помню, в настройках сквида редиректор запускается указанным количеством экземпляров, и
>для обработки используется очередной свободный экземпляр ...
>.
>а сам редиректор должен в цикле принимать запрос, обрабатывать и выкатывать результат,
>не завершаясь, но ожидая очередного запроса
>.
>удачиДак так и есть вроде, свой скрипт то я выложил
в скрипт ваш я как раз не полезу, ибо верю, что подсказать ключевые моменты можно, а делать дело за человека нельзя
.
я писал редиректоры для сквида несколько лет назад, вот помню ключевые моменты, которые нужно обеспечить
.
если ваш скрипт это всё реализует, просто нужно отлаживать ... как вариант, для начала написать редиректор попроще и добиться, чтобы он работал. Ещё посмотрите примеры кода редиректоров в поставке сквида
.
удачи
>в скрипт ваш я как раз не полезу, ибо верю, что подсказать
>ключевые моменты можно, а делать дело за человека нельзя
>.
>я писал редиректоры для сквида несколько лет назад, вот помню ключевые моменты,
>которые нужно обеспечить
>.
>если ваш скрипт это всё реализует, просто нужно отлаживать ...
>.
>удачимды... жаль я думал хоть подскажете в каком месте скрипт зависает....
>[оверквотинг удален]
>>ключевые моменты можно, а делать дело за человека нельзя
>>.
>>я писал редиректоры для сквида несколько лет назад, вот помню ключевые моменты,
>>которые нужно обеспечить
>>.
>>если ваш скрипт это всё реализует, просто нужно отлаживать ...
>>.
>>удачи
>
>мды... жаль я думал хоть подскажете в каком месте скрипт зависает....проблему решил всем спасибо =))) дело было ну в очень простом "\n";
>[оверквотинг удален]
>>ключевые моменты можно, а делать дело за человека нельзя
>>.
>>я писал редиректоры для сквида несколько лет назад, вот помню ключевые моменты,
>>которые нужно обеспечить
>>.
>>если ваш скрипт это всё реализует, просто нужно отлаживать ...
>>.
>>удачи
>
>мды... жаль я думал хоть подскажете в каком месте скрипт зависает....проблему решил всем спасибо =))) дело было ну в очень простом "\\n";