Использование прокси-сервера в Perl-скрипте - PullRequest
0 голосов
/ 25 апреля 2018

Я попытался добавить прокси-сервер к следующему сценарию perl:

#!/usr/bin/perl

TO='list of email adresses here';

require "/usr/local/SCRIPTS/www-tools/service-name/jcode.pl";
use LWP::UserAgent;
$sendmail = '/usr/lib/sendmail -t -oi';
######################
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year = $year+1900;
$mon  = $mon+1;

$MMDD = sprintf("%02d/%02d",$mon,$mday);
$HHMM = sprintf("%02d:%02d",$hour,$min);

$err = 0;

#Ph.1 WebAccess-1stServer(VIP)
@ret = &SiteAccess( 'http://IP:PORT/hostname/' , 
                    'http://IP:PORT/hostname/Login.do' );

if( $ret[0] != 200 || $ret[2] != 200 ){
  $err = 1;
}
$body  = &jcode::euc($ret[1]);
if( $body !~ m#<title>ServiceName<\/title># ){
  $err = 2;
}

$title = &jcode::euc('<title>web$BO"7H(J</title>');
$body  = &jcode::euc($ret[3]);
if( $body !~ m#$title# ){
    $err = 3;
}
&MailSend('Web')  if( $err > 0 );
$err=0;

#Ph.2 WebAccess-2ndServer(Direct)
@ret = &SiteAccess( 'http://2ndServerIP:PORT/hostname/' , 
                    'http://2ndServerIP:PORT/hostname/Login.do' );


if( $ret[0] != 200 || $ret[2] != 200 ){
    $err = 4;
}
$body  = &jcode::euc($ret[1]);
if( $body !~ m#<title>ServiceName<\/title># ){
    $err = 5;
}

$title = &jcode::euc('<title>web$BO"7H(J</title>');
$body  = &jcode::euc($ret[3]);
if( $body !~ m#$title# ){
    $err = 6;
}
&MailSend('Web2nd')  if( $err > 0);
$err=0;

#Ph.3 POP
@ret = &SiteAccess( 'http://IP:PORT/hostname/' ,
                    'http://IP:PORT/hostname/Login.do' );

if( $ret[0] != 200 || $ret[2] != 200 ){
    $err = 7;
}
$body  = &jcode::euc($ret[1]);
if( $body !~ m#<title>ServiceName</title># ){
    $err = 8;
}

$title = &jcode::euc('<title>TitleJapanese<(J</title>');
$body  = &jcode::euc($ret[3]);
if( $body !~ m#$title# ){
    $err = 9;
}

&MailSend('POP')  if( $err > 0);
$err=0;


#Ph.4 Exchange(EWS)
@ret = &SiteAccess( 'http://IP:PORT/hostname/' ,
                    'http://IP:PORT/hostname/Login.do' );

if( $ret[0] != 200 || $ret[2] != 200 ){
    $err = 10;
}
$body  = &jcode::euc($ret[1]);
if( $body !~ m#<title>ServiceName</title># ){
    $err = 11;
}

$title = &jcode::euc('<title>TitleJapanese<(J</title>');
$body  = &jcode::euc($ret[3]);
if( $body !~ m#$title# ){
    $err = 12;
}

&MailSend('Exchange-EWS')  if( $err > 0);
$err=0;



sub SiteAccess{
    my $url1 = shift;
    my $url2 = shift;
    # $ua,$req,$res;i
    my @r;

    if($url1 ne ''){
        $ua = LWP::UserAgent->new;

        $req = HTTP::Request->new(GET => $url1);
        $res = $ua->request($req);

        $r[0] = $res->code;
    $r[1] = $res->content;
    }
    if($url2 ne ''){
        $ua = LWP::UserAgent->new;

        $res = $ua->post( $url2,
            {
                    "c" => "don't knwo what that is",
                    "u" => "users ldap",
                    "p" => "password"
                    }, 
                    "Content-Type" => "application/x-www-form-urlencoded",
              "User-Agent"   => "DoCoMo/2.0 N901iS(c100;TB;W24H12;ser123445654654645;icc898114564645667716666f)");

        $r[2] = $res->code;
        $r[3] = $res->content;
     }
    return @r;
}

sub MailSend{
    my $title = shift;
    my $body;
    my $from;
    my @message;

#the following lines need another file name jcode to display properly.    It     just means error code or auth error.

    $message[1] = &jcode::jis('[Web]$B%(%i!<%3!<%I(J');
    $message[4] = &jcode::jis('[Web2nd]$B%(%i!<%3!<%I(J');
    $message[7] = &jcode::jis('[POP]$B%(%i!<%3!<%I(J');
    $message[10] = &jcode::jis('[EWS]$B%(%i!<%3!<%I(J');

    $message[2] = &jcode::jis('[Web]$B%m%0%$%s2hLL(J');
    $message[5] = &jcode::jis('[Web2nd]$B%m%0%$%s2hLL(J');
    $message[8] = &jcode::jis('[POP]$B%m%0%$%s2hLL(J');
    $message[11] = &jcode::jis('[EWS]$B%m%0%$%s2hLL(J');

    $message[3] = &jcode::jis('[Web]auth$B%(%i!<(J');
    $message[6] = &jcode::jis('[Web2nd]auth$B%(%i!<(J');
    $message[9] = &jcode::jis('[POP]auth$B%(%i!<(J');
    $message[12] = &jcode::jis('[EWS]auth$B%(%i!<(J');

    $from = 'mail@abc.com';

    $title = '['.$title.']cnct1 err';

#    $title = $title.'['.$MMDD.$HHMM.']';

    $body =<<END_OF_BODY;
To: $TO
Subject: $title
From: $from

ConnectOneCheck Error
Date       : $MMDD $HHMM
ErrorStatus: $err 
ErrorMsg   : $message[$err] 
END_OF_BODY

open(ML,"| $sendmail") || &error("Can't execute sendmail : $sendmail\n");
    print ML $body;
    close(ML);
}

Итак, вот часть, где я пытался добавить использование прокси. Большинство частей закомментированы, за исключением последней функции:

! / USR / бен / Perl

TO='list of email adresses here';

require "/usr/local/SCRIPTS/www-tools/service-name/jcode.pl";
use LWP::UserAgent;
$sendmail = '/usr/lib/sendmail -t -oi';
######################
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year = $year+1900;
$mon  = $mon+1;

$MMDD = sprintf("%02d/%02d",$mon,$mday);
$HHMM = sprintf("%02d:%02d",$hour,$min);

$err = 0;

Следующая часть закомментирована, потому что она не используется.

@ret = &SiteAccess( 'http://IP:PORT/hostname/' ,
                    'http://IP:PORT/hostname/Login.do' );

if( $ret[0] != 200 || $ret[2] != 200 ){
    $err = 10;
}
$body  = &jcode::euc($ret[1]);
if( $body !‾ m#<title>ConnectONE</title># ){
    $err = 11;
}

$title = &jcode::euc('<title>TitleJapanese</title>');
$body  = &jcode::euc($ret[3]);
if( $body !‾ m#$title# ){
    $err = 12;
}

&MailSend('Exchange-EWS')  if( $err > 0);
$err=0;



sub SiteAccess{
    my $url1 = shift;
    my $url2 = shift;
    # $ua,$req,$res;i
    my @r;

    if($url1 ne ''){
        $ua = LWP::UserAgent->new;
        $ENV{HTTP_proxy} = "proxy fqdn here";                     
        $ua->env_proxy                                                      

        $req = HTTP::Request->new(GET => $url1);
        $res = $ua->request($req);

        $r[0] = $res->code;
    $r[1] = $res->content;
    }
    if($url2 ne ''){
        $ua = LWP::UserAgent->new;
        $ENV{HTTP_proxy} = "proxy fqdn here";                     
        $ua->env_proxy                                                      
           $res = $ua->post( $url2,
            {
                    "c" => "don't knwo what that is",
                    "u" => "users ldap",
                    "p" => "password"
                    }, 
                    "Content-Type" => "application/x-www-form-urlencoded",
              "User-Agent"   => "DoCoMo/2.0 N901iS(c100;TB;W24H12;ser123445654654645;icc898114564645667716666f)");

        $r[2] = $res->code;
        $r[3] = $res->content;
     }
    return @r;
}

sub MailSend{
    my $title = shift;
    my $body;
    my $from;
    my @message;

#the following lines need another file name jcode to display properly.    It     just means error code or auth error.

    #$message[1] = &jcode::jis('[Web]$B%(%i!<%3!<%I(J');
    #$message[4] = &jcode::jis('[Web2nd]$B%(%i!<%3!<%I(J');
    #$message[7] = &jcode::jis('[POP]$B%(%i!<%3!<%I(J');
    $message[10] = &jcode::jis('[EWS]$B%(%i!<%3!<%I(J');

    #$message[2] = &jcode::jis('[Web]$B%m%0%$%s2hLL(J');
    #$message[5] = &jcode::jis('[Web2nd]$B%m%0%$%s2hLL(J');
    #$message[8] = &jcode::jis('[POP]$B%m%0%$%s2hLL(J');
    $message[11] = &jcode::jis('[EWS]$B%m%0%$%s2hLL(J');

    #$message[3] = &jcode::jis('[Web]auth$B%(%i!<(J');
    #$message[6] = &jcode::jis('[Web2nd]auth$B%(%i!<(J');
    #$message[9] = &jcode::jis('[POP]auth$B%(%i!<(J');
    $message[12] = &jcode::jis('[EWS]auth$B%(%i!<(J');

    $from = 'mail@abc.com';

    $title = '['.$title.']cnct1 err';

#    $title = $title.'['.$MMDD.$HHMM.']';

    $body =<<END_OF_BODY;
To: $TO
Subject: $title
From: $from

ConnectOneCheck Error
Date       : $MMDD $HHMM
ErrorStatus: $err 
ErrorMsg   : $message[$err] 
END_OF_BODY

open(ML,"| $sendmail") || &error("Can't execute sendmail : $sendmail\n");
    print ML $body;
    close(ML);
}

ОК, поэтому я добавил прокси с помощью этой функции

$ua = LWP::UserAgent->new;
$ENV{HTTP_proxy} = "here is the FQDN of the proxy";                     
$ua->env_proxy    

Но это плохо компилируется. Это дает мне эту ошибку:

Синтаксическая ошибка в /usr/local/SCRIPTS/www-tools/connectone/ConnectOneCheck.pl строке 93 рядом с $ body! Нераспознанный персонаж \ xE2; отмечен знаком <- ЗДЕСЬ после f ($ body! <- ЗДЕСЬ около столбца 12 в /usr/local/SCRIPTS/www-tools/connectone/ConnectOneCheck.pl строка 93. </p>

Здесь кто-то, кто может запустить этот скрипт?

1 Ответ

0 голосов
/ 25 апреля 2018

Ваш скрипт не компилируется, как представлено здесь.В строке 3, где написано

TO='list of

, его необходимо изменить на

$TO='list of

...и тогда это компилируется для меня.Без ошибки вы попадаете в строку 93.

С моей ограниченной точки зрения это означает, что на самом деле в вашей строке 93 кода может быть какая-то опечатка, которая не дошла до кода на этой стороне.

Если вы удалите свою строку 93 в своем скрипте и скопируете строку 93 обратно в свой код, вы можете быть уверены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...