Using perl to check services

J

Jason Miles

Hi,

I wrote this little script to check to see if our Lotus Notes servers are
running, and from the command line it works fine if I type perl
notescheck.pl

When I invoke the script from a web page I get an error:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable
to complete your request.

Please contact the server administrator, (e-mail address removed) and inform them of
the time the error occurred, and anything you might have done that may have
caused the error.

More information about this error may be available in the server error log.



Here is the script:

#!/usr/bin/perl -w
#use strict;
use IO::Socket;

$hostName = notesserver;
my $host = shift || $hostName;
my $port = shift || 25;
my $sock = new
IO::Socket::INET(PeerAddr=>$host,PeerPort=>$port,Proto=>'tcp');
if($sock)
{
print "<script>
alert(\"Server notesserver is running...\");
history.back();
</script>";
exit;
}
else
{
print "<script>
alert(\"Server notesserver appears to be down...\");
history.back();
</script>";
exit;
}
close $sock or die "close: $!";



When I run the script from the console (perl notescheck.pl) I get the
following:

<script>
alert("Server RSLNM02 is running...");
history.back();
</script>[root@rts cgi-bin]#
....which tells me the script is running fine.

Heres the code from the web page:

<form action="/cgi-bin/notescheck.pl" method="post">
<input type="submit">

Can anyone tell me why this doesn't work?

Thanks,
Jason
 
J

Jim Gibson

Jason Miles said:
Hi,

I wrote this little script to check to see if our Lotus Notes servers are
running, and from the command line it works fine if I type perl
notescheck.pl

When I invoke the script from a web page I get an error:

[server error snipped]
Here is the script:

#!/usr/bin/perl -w
#use strict;
use IO::Socket;

$hostName = notesserver;
^^^^^^^^^^^ bareword?
my $host = shift || $hostName;
my $port = shift || 25;
my $sock = new
IO::Socket::INET(PeerAddr=>$host,PeerPort=>$port,Proto=>'tcp');
if($sock)
{
print "<script>
alert(\"Server notesserver is running...\");
history.back();
</script>";
exit;
}
else
{
print "<script>
alert(\"Server notesserver appears to be down...\");
history.back();
</script>";
exit;
}
close $sock or die "close: $!";

Is this the code you ran? It contains a bare-word 'noteserver', which
should probably be a variable or a string, but you do not show how it
gets the value 'RSLNM02'. You would have noticed this if you had left
the 'use strict;' line uncommented. Please do not ask people to find
problems that the compiler can easily find.

What is the error message in the server log? (You did look for the
error message in the server log, didn't you?)

Try

perldoc -q 500

for more help, particularly about the proper newsgroup for posting
about web server questions (your Perl program looks OK, except for the
noted error).

Finally, this newsgroup is defunct. Try comp.lang.perl.misc in the
future for Perl questions.
 
J

James T

Jason Miles said:
Hi,

I wrote this little script to check to see if our Lotus Notes servers
are running, and from the command line it works fine if I type perl
notescheck.pl

When I invoke the script from a web page I get an error:

[server error snipped]

Here is the script:

#!/usr/bin/perl -w
#use strict;
use IO::Socket;

$hostName = notesserver;
^^^^^^^^^^^ bareword?
my $host = shift || $hostName;
my $port = shift || 25;
my $sock = new
IO::Socket::INET(PeerAddr=>$host,PeerPort=>$port,Proto=>'tcp');
if($sock)
{
print "<script>
alert(\"Server notesserver is running...\");
history.back();
</script>";
exit;
}
else
{
print "<script>
alert(\"Server notesserver appears to be down...\");
history.back();
</script>";
exit;
}
close $sock or die "close: $!";
Is this the code you ran? It contains a bare-word 'noteserver', which
should probably be a variable or a string, but you do not show how it
gets the value 'RSLNM02'. You would have noticed this if you had left
the 'use strict;' line uncommented. Please do not ask people to find
problems that the compiler can easily find.

What is the error message in the server log? (You did look for the error
message in the server log, didn't you?)

Try

perldoc -q 500

for more help, particularly about the proper newsgroup for posting about
web server questions (your Perl program looks OK, except for the noted
error).

Finally, this newsgroup is defunct. Try comp.lang.perl.misc in the
future for Perl questions.

This may be a stupid question, other then the bare word, isn't this script
also missing the content type, so the output is interpreted by the browser
as a a web page?
 
J

Jason Miles

Yes, that's exactly what the problem was. Thanks for your replies...

James T said:
Jason Miles said:
Hi,

I wrote this little script to check to see if our Lotus Notes servers
are running, and from the command line it works fine if I type perl
notescheck.pl

When I invoke the script from a web page I get an error:

[server error snipped]

Here is the script:

#!/usr/bin/perl -w
#use strict;
use IO::Socket;

$hostName = notesserver;
^^^^^^^^^^^ bareword?
my $host = shift || $hostName;
my $port = shift || 25;
my $sock = new
IO::Socket::INET(PeerAddr=>$host,PeerPort=>$port,Proto=>'tcp');
if($sock)
{
print "<script>
alert(\"Server notesserver is running...\");
history.back();
</script>";
exit;
}
else
{
print "<script>
alert(\"Server notesserver appears to be down...\");
history.back();
</script>";
exit;
}
close $sock or die "close: $!";
Is this the code you ran? It contains a bare-word 'noteserver', which
should probably be a variable or a string, but you do not show how it
gets the value 'RSLNM02'. You would have noticed this if you had left
the 'use strict;' line uncommented. Please do not ask people to find
problems that the compiler can easily find.

What is the error message in the server log? (You did look for the error
message in the server log, didn't you?)

Try

perldoc -q 500

for more help, particularly about the proper newsgroup for posting about
web server questions (your Perl program looks OK, except for the noted
error).

Finally, this newsgroup is defunct. Try comp.lang.perl.misc in the
future for Perl questions.

This may be a stupid question, other then the bare word, isn't this script
also missing the content type, so the output is interpreted by the browser
as a a web page?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,050
Latest member
AngelS122

Latest Threads

Top