in reply to Re: Execute a perl script fpr another Computer
in thread Execute a perl script fpr another Computer

Hi Tachyon,
I have try what you recomended here is the script I follow. But there is some error. Here is the script.
My server B have Apache cgi install. And this is the script i put in. name : servert.pl
#/usr/bin/perl -w use strict; use CGI; my $q = new CGI; print $q->header(); my $err = do_something(); print $err ? $err : "OK"; sub do_something { for (my $i=0;$i<20;$i++ { print "\7"; } }


Then the server A i have put in the script name clientt.pl inside one of the folder.

#!/usr/bin/perl -w use strict; use LWP::Simple #while (1) { # if ( some_event() ) { my $response = get('http://192.168.0.123/cgi-bin/servert.pl'); warn $response =~ m/OK/ ? "Notified server b OK\n" : "$respons +e\n"; # } sleep 10; #} # check for some event #sub some_event { ... }


I have take out the while and the sub function because i just want to test whether it can call to the server B. but it reply me with the error below, even i didn't remark it.

Use of uninitialized value in pattern match (m//) at clientt.pl line 1 +0. <br> Use of uninitialized value in concatenation (.) or string at clientt.p +l line 10<br>

Replies are listed 'Best First'.
Re: Re: Re: Execute a perl script fpr another Computer
by tachyon (Chancellor) on Jan 02, 2003 at 08:11 UTC

    Your CGI will not compile for a start (missing closing ) after for... Plus you totally miss the point of the error check. The do_something() sub should either return 0 ie false if there was no error or the error message if whatever the hell it is supposed to do fails (just like a system call that returns 0 for OK or the error code). We then print out 'OK' if there was no error message or the error message if there was and error. You should be able to call this script and get either the error message or OK in your browser.

    The address you type in to get to this script ie http://mysite.com/cgi-bin/script.pl if the address that the second script need to use. Once you have that working the rest will work fine provided you modify the second script to point at this CGI and don't just blindly paste in the IP address I posted - your server is probably not at http://192.168.0.123/ - this needs to be changed.

    #/usr/bin/perl -w use strict; use CGI; my $q = new CGI; print $q->header(); my $err = do_something(); print $err ? $err : "OK"; sub do_something { if ( 1 + 1 == 2 ) { return 0; } else { return 'An error has occurred 1 + 1 is not equal to 2!' } }

    cheers

    tachyon

    s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print

      Hi Techton,
      Sure i won't copy blindly, :) because i not pasting my script there due to problem I'm using my personal computer now, and my pc cannot connect to my internal server. So I can't manage to paste the script i have amended to paste here. I have to internal server which using ip 10.3.33.xx for this testing.
      I found the error already is my setting of the #!D:\Perl\bin\perl -w for window, not usr :)
      Thank you Techyon u safe my life