Using perl to check services

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Jason Miles

    Using perl to check services

    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 misconfiguratio n and was unable
    to complete your request.

    Please contact the server administrator, you@example.com 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::INE T(PeerAddr=>$ho st,PeerPort=>$p ort,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




  • Jim Gibson

    #2
    Re: Using perl to check services

    In article <qVAcc.19651$wq 4.1012234@news2 0.bellglobal.co m>, Jason Miles
    <ryder01@bellne xxia.net> wrote:
    [color=blue]
    > 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:[/color]

    [server error snipped]
    [color=blue]
    >
    > Here is the script:
    >
    > #!/usr/bin/perl -w
    > #use strict;
    > use IO::Socket;
    >
    > $hostName = notesserver;[/color]
    ^^^^^^^^^^^ bareword?
    [color=blue]
    > my $host = shift || $hostName;
    > my $port = shift || 25;
    > my $sock = new
    > IO::Socket::INE T(PeerAddr=>$ho st,PeerPort=>$p ort,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: $!";
    >[/color]

    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.

    Comment

    • James T

      #3
      Re: Using perl to check services

      On Tue, 06 Apr 2004 13:27:26 -0700, Jim Gibson wrote:
      [color=blue]
      > In article <qVAcc.19651$wq 4.1012234@news2 0.bellglobal.co m>, Jason Miles
      > <ryder01@bellne xxia.net> wrote:
      >[color=green]
      >> 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:[/color]
      >
      > [server error snipped]
      >
      >[color=green]
      >> Here is the script:
      >>
      >> #!/usr/bin/perl -w
      >> #use strict;
      >> use IO::Socket;
      >>
      >> $hostName = notesserver;[/color]
      > ^^^^^^^^^^^ bareword?
      >[color=green]
      >> my $host = shift || $hostName;
      >> my $port = shift || 25;
      >> my $sock = new
      >> IO::Socket::INE T(PeerAddr=>$ho st,PeerPort=>$p ort,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: $!";
      >>
      >>[/color]
      > 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.[/color]

      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?

      Comment

      • Jason Miles

        #4
        Re: Using perl to check services

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

        "James T" <turajb@_NOSPAM _hoflink.com> wrote in message
        news:pan.2004.0 4.07.03.28.06.7 65573@_NOSPAM_h oflink.com...[color=blue]
        > On Tue, 06 Apr 2004 13:27:26 -0700, Jim Gibson wrote:
        >[color=green]
        > > In article <qVAcc.19651$wq 4.1012234@news2 0.bellglobal.co m>, Jason Miles
        > > <ryder01@bellne xxia.net> wrote:
        > >[color=darkred]
        > >> 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:[/color]
        > >
        > > [server error snipped]
        > >
        > >[color=darkred]
        > >> Here is the script:
        > >>
        > >> #!/usr/bin/perl -w
        > >> #use strict;
        > >> use IO::Socket;
        > >>
        > >> $hostName = notesserver;[/color]
        > > ^^^^^^^^^^^ bareword?
        > >[color=darkred]
        > >> my $host = shift || $hostName;
        > >> my $port = shift || 25;
        > >> my $sock = new
        > >> IO::Socket::INE T(PeerAddr=>$ho st,PeerPort=>$p ort,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: $!";
        > >>
        > >>[/color]
        > > 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.[/color]
        >
        > 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?[/color]


        Comment

        Working...