> -----Original Message-----
> From: Arnie & Georgia Stender [mailto:[EMAIL PROTECTED] 
> Sent: Thursday, December 29, 2005 12:22 PM
> To: users@httpd.apache.org
> Subject: [EMAIL PROTECTED] Newbe needs help passing form data
> 
> Hello,
>     I am setting up my own Internet presence starting with 
> DNS and HTML 
> servers. I am teaching myself (as much as possible) how to write HTML 
> from scratch. Below you will find the server $ENV variables 
> which will 
> describe versions of the server etc. This is running on Linux 
> (LFS) 6.0 
> server.  I have looked through at least the archives for this 
> month and 
> not found an answer to my problem as well as a number of books on the 
> subject of writing CGI (perl). So I ask you:
> I have written a small HTML with a three field form that is 
> supposed to 
> pass the data to a perl script which in turn writes a dynamic 
> HTML page 
> based on the input to the form and sends it back to the browser. 
> According to all I have read if I use method==POST the form data is 
> supposed to be sent to the script via STDIN and if I use 
> method==GET the 
> data is sent via the $ENV{QUERY_STRING} variable. When using POST the 
> amount of data being sent is available in the $ENV{CONTENT_LENGTH} 
> variable. I have enabled everything I can find to run CGI on 
> the server 
> but I can not get the server to send any information to the script. I 
> created the perl script from the online Apache manual to dump all the 
> variables it is passing and the QUERY_STRING is empty and if 
> the form is 
> using POST the CONTENT_LENGTH==0. I am about 90% certain that I am 
> missing something in the configuration file but after days of looking 
> and reading I have not found out what it is. Running 'perl -w script' 
> with a QUERY_STRING environment variable set equal to good 
> data produces 
> a good looking HTML output so I will go out on a limb and say the 
> problem is not in the perl script. So, can anybody tell me what I am 
> missing? BTW, the CGI script does produce the static portion 
> of the HTML 
> so the script is running just not getting the form data. Thanks in 
> advance for any help you can give to point me in the right direction. 
> Below is a sanitized output from the Apache ENV dump script.
> 
> Arnie
> 
> SCRIPT_NAME --> /cgi-bin/env.pl
> SERVER_NAME --> stender4.local
> HTTP_REFERER --> http://stender4.local/arnie.html
> SERVER_ADMIN --> [EMAIL PROTECTED]
> HTTP_ACCEPT_ENCODING --> gzip,deflate
> HTTP_CONNECTION --> keep-alive
> REQUEST_METHOD --> POST
> CONTENT_LENGTH --> 0
> HTTP_ACCEPT --> 
> text/xml,application/xml,application/xhtml+xml,text/html;q=0.9
,text/plain;q=0.8,image/png,*/*;q=0.5
> SCRIPT_FILENAME --> /usr/local/apache2/cgi-bin/env.pl
> SERVER_SOFTWARE --> Apache/2.0.54 (Unix)
> HTTP_ACCEPT_CHARSET --> ISO-8859-1,utf-8;q=0.7,*;q=0.7
> QUERY_STRING -->
> REMOTE_PORT --> 34615
> HTTP_USER_AGENT --> Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.7) 
> Gecko/20050416 Fedora/1.0.3-1.3.1 Firefox/1.0.3
> SERVER_PORT --> 80
> SERVER_SIGNATURE -->
> Apache/2.0.54 (Unix) Server at stender4.local Port 80
> 
> HTTP_ACCEPT_LANGUAGE --> en-us,en;q=0.5
> REMOTE_ADDR --> 192.168.77.221
> HTTP_KEEP_ALIVE --> 300
> CONTENT_TYPE --> application/x-www-form-urlencoded
> SERVER_PROTOCOL --> HTTP/1.1
> PATH --> /bin:/usr/bin:/sbin:/usr/sbin
> REQUEST_URI --> /cgi-bin/env.pl
> GATEWAY_INTERFACE --> CGI/1.1
> SERVER_ADDR --> 192.168.77.224
> DOCUMENT_ROOT --> /usr/local/apache2/htdocs
> HTTP_HOST --> stender4.local
> 
> 
Here is a script we are using now.  It is passing variables into this
perl script.  Hope it helps you


#! D:/WebCore2/perl/bin/perl.exe -w

use CGI qw(:standard);
use Net::Telnet;

$|=1;

my $WebP = new CGI;
print $WebP->header;

my $telnet;
my $output;
my $function;
my $remoteServer;
my $pageLink =
"http://esystems.bankofamerica.com/Tools/_PagingForm/pagingform.php?mess
=Oncall%3APlease%20call%20eSystems%20re%3A%20EWAA%20sev%201%20issue&dire
nt=G00002002&Ntype=U";
my $pageLinkSev2 =
"http://esystems.bankofamerica.com/Tools/_PagingForm/pagingform.php?mess
=Oncall%3APlease%20call%20eSystems%20re%3A%20EWAA%20sev%202%20issue&dire
nt=G00002002&Ntype=U";
#my $function = "diskspace";
#my $remoteServer = "cwartxd01";
##$function options = ping, diskspace, CPU, smservauth, smservaz,
smservadm, smservacct
## page group link
http://esystems.bankofamerica.com/Tools/_PagingForm/pagingform.php?mess=
Oncall%3APlease%20call%20eSystems%20re%3A%20EWAA%20sev%201%20issue&diren
t=G00002002&Ntype=U

if (($WebP->param("function") eq '') || ($WebP->param("remoteServer") eq
'')){
        print "<form>";
        if ($WebP->param("function") eq ''){
                print "function:";
                print "<input type=text name=function
value='".$WebP->param("function")."'><br>";
        }else{
                print "<input type=hidden name=function
value='".$WebP->param("function")."'><br>";
        }
        if ($WebP->param("remoteServer") eq ''){
                print "Server:";
                print "<select name=remoteServer>\n";
                print "<option>cwartxp05</option>\n";
                print "<option>cwartxp06</option>\n";
                print "<option>cwartxp07</option>\n";
                print "<option>cwasfop04</option>\n";
                print "<option>cwasfop05</option>\n";
                print "<option>cwasfop06</option>\n";
                print "<option>cwasfop07</option>\n";
                print "<option>cwartxd01</option>\n";
                print "</select>\n";
        }else{
                print "<input type=hidden name=remoteServer
value='".$WebP->param("remoteServer")."'><br>";
        }
        print "<input type=submit>";
        print "</form>";
        exit;
}else{
        ## pull the query string off the URL
        $function = $WebP->param("function");
        $remoteServer = $WebP->param("remoteServer");
}


print "Function: $function<br>";
print "Remote Server: $remoteServer<br><br>";

print "<html>\n";
print "<head><title>Telnet</title></head>\n";
print "<body bgcolor=\"#FFFFFF\">\n";

######log in to server#################
$telnet = new Net::Telnet (Timeout=>30,
        
Errmode=>'return'
        
);
$telnet->open($remoteServer);
$telnet->waitfor('/login: *$/i');
$telnet->print ('xxxxxx');
$telnet->waitfor('/Password: *$/i');
$telnet->print ('xxxxxxx');
$telnet->waitfor('/[\$>] $/');
my $err = $telnet->errmsg;
if ($err ne ''){
        print "Error code:  $err";
        die();
}

#########start ping#############
if($function eq 'ping'){
        my $cmd = "ping $remoteServer > ping.txt",;
        system $cmd;
        open(RESUL, "ping.txt");
        my $pingTxt;
        while(<RESUL>){
                $pingTxt .= $_;
        }
        print pre($pingTxt),br,br;

        $pingTxt =~ /Sent = (\d).*Received = (\d)/i;
        if($1 != ''){
                if ($1 == $2){
                        print b("Server is Pinging at 100%");
                }elsif($2 < 4 && $2 > 0){
                        print "Server is Pinging, but less than 100%";
                }elsif($2 == 0){
                        print "Server is not Pinging";
                        print "Page the EWAA Oncall<br>\n";
                        print "<input type=button value='Page EWAA
Oncall' onClick=\"window.open('".$pageLink ."', 'ccwindow', 'left=100,
top=700, height=800, width=700,
dependent=no,directories=no,hotkeys=no,menubar=no,personalbar=no,resizab
le=yes,scrollbars=yes,status=no')\"><br>\n";
                }
        }else{
                $pingTxt =~ /Unknown host/i;
                print "Unknown Host";
                print "Page the EWAA Oncall<br>\n";
                print "<input type=button value='Page EWAA Oncall'
onClick=\"window.open('".$pageLink ."', 'ccwindow', 'left=100, top=700,
height=800, width=700,
dependent=no,directories=no,hotkeys=no,menubar=no,personalbar=no,resizab
le=yes,scrollbars=yes,status=no')\"><br>\n";

        }
        close RESUL;
}
#########end ping#############

#########verify diskspace mode#############
if($function eq 'diskspace'){
        my $cmd = "df -k /opt ";
        $telnet->print($cmd);
        ($output2) = $telnet->waitfor('/[\$>]/i');
        print hr({-width=>'80%'});
        print pre("$output2\n");
        print hr({-width=>'80%'});
        if ($output2 =~ /(\d\d%)/){
                print "disk space used: <b>$1</b>\n<br>";
                if ($1 > 90){
                        print "blow up!!";
                        print "Page the EWAA Oncall<br>\n";
                        print "<input type=button value='Page EWAA
Oncall' onClick=\"window.open('".$pageLink ."', 'ccwindow', 'left=100,
top=700, height=800, width=700,
dependent=no,directories=no,hotkeys=no,menubar=no,personalbar=no,resizab
le=yes,scrollbars=yes,status=no')\"><br>\n";
                }else{
                        print "Disk space within range."
                }
        }
}
#########end disk space#############

#########start CPU Util#############
if($function eq 'CPU'){

        my $log = "Server:
$remoteServer\n<####################################################>\n"
;
        my $cnter = 0;
        my $bool_state;
        $cmd = "cat vmstatResults";
        $telnet->print($cmd);
        ($output2) = $telnet->waitfor('/[\$>] $/i');

        @output2 = split("\n", $output2);
        ## shift off the top 4 lines
        ## and last 1 line
        print "Start Time: ".$output2[1]."<br>";
        $log .= "Start Time: ".$output2[1].".\n VMSTAT 60 30 was running
on server doing 60 second checks for up to 30 minutes.\nThese are the
results\n";
        shift @output2;
        shift @output2;
        shift @output2;
        shift @output2;
        pop @output2;
        foreach $row (@output2){
                ## every 20 rows, vmstat puts out the header colomn
names again this will skip them
                if ($row =~ /(\d+)$/ || $bool_state != 1){
                        $cnter++;
                        ##print "$row - $1\%<br>";
                        if ($1 < 100){
                                print "$1\% - CPU available below 10%
threshold\n";
                                $log .= "$1\% - CPU available below 10%
threshold\n";
                        }else{
                                print "$1\% - CPU available above
10%\nVMSTAT stopped.\n";
                                $log .= "$1\% - CPU available above
10%\nVMSTAT stopped.\n";
                                $log .=
"<####################################################>";
                                $bool_state = 1;
                                $cmd = "ps -ef|grep smuser|grep vmstat";
                                $telnet->print($cmd);
                                ($output2) =
$telnet->waitfor('/[\$>]/');
                                ##print pre("$output2<br>");
                                if ($output2 =~ /\bsmuser\b +(\d+).+\d
+vmstat \d+ \d+/i){
                                        ##print "Process ID for vmstat:
$1<br>\n";
                                        my $cmd = "kill -9 $1";
                                        ##print b($cmd);
                                        $telnet->print($cmd);
                                        ($output2) =
$telnet->waitfor('/[\$>]/');
                                        print "Minutes took to clear:
$cnter<br>";
                                }
                        }
                }
        }
        if ($bool_state == 1){
                print "Server CPU cleared up<br>";
                $log .= "Minutes took to clear: $cnter<br>";
        }else{
                print "Server CPU remains high after $cnter
minutes<br>";
        }
        if ($cnter < 10 && $bool_state == 1){
                print "CPU cleared within 10 minutes, no action
required\n";
        }elsif (($cnter > 10 && $cnter < 30) && $bool_state == 1){
                print
start_form(-action=>'/Public/_eMail/ProcessMail.php', -method=>'get');
                print hidden(-name=>logResults, -value=>$log);
                print hidden(-name=>SendType, -value=>EWAATool);
                print submit(-name=>Submit, -value=>'Send Auto Email to
EWAA Group');
        }elsif ($cnter > 30){
                print b("CPU has not cleared within 30 minutes\n");
                print b("Page the EWAA Oncall<br>\n");
                print "<input type=button value='Page EWAA Oncall'
onClick=\"window.open('".$pageLink ."', 'ccwindow', 'left=100, top=700,
height=800, width=700,
dependent=no,directories=no,hotkeys=no,menubar=no,personalbar=no,resizab
le=yes,scrollbars=yes,status=no')\"><br>\n";
                ##print $log;
                print
start_form(-action=>'/Public/_eMail/ProcessMail.php', -method=>'get');
                print hidden(-name=>logResults, -value=>$log);
                print hidden(-name=>SendType, -value=>EWAATool);
                print submit(-name=>Submit, -value=>'Send Auto Email to
EWAA Group');
        }else{
                print "<input type=button value='Refresh'
onClick=\"location.reload()\">";
        }
}
#########end CPU Util#############

#########start Service#############
if($function eq 'smservauth' || $function eq 'smservaz' || $function eq
'smservadm' || $function eq 'smservacct'){
        my $cmd = "ps -ef|grep smuser|grep $function";
        $telnet->print($cmd);
        ($output2) = $telnet->waitfor('/[\$>]/');
        print hr({-width=>'80%'});
        print pre("$output2\n");
        print hr({-width=>'80%'});
        $output2 =~ /\bsmuser\b +(\d+).+\d +\b$function\b/ig;
        print "Process ID for $function: $1<br>\n";
        if ($1 eq ''){
                print "process not running<br>\n";
                print "Page the EWAA Oncall<br>\n";
                print "<input type=button value='Page EWAA Oncall'
onClick=\"window.open('".$pageLink ."', 'ccwindow', 'left=100, top=700,
height=800, width=700,
dependent=no,directories=no,hotkeys=no,menubar=no,personalbar=no,resizab
le=yes,scrollbars=yes,status=no')\"><br>\n";
        }else{
                print "If sitescope is still erroring, kill Process
$function  on  $remoteServer<br>";
                print "<input type=button value='Kill $function'
onClick=\"window.location='EWAATool.pl?function=kill&oldfunction=$functi
on&remoteServer=$remoteServer&oldPID=$1'\">";
        }
}
#########end Service#############

#########start kill Service#############
if($function eq 'kill'){
        my $log = "Server:
$remoteServer\n<####################################################>\n"
;
        $oldPID = $WebP->param("oldPID");
        $oldfunction = $WebP->param("oldfunction");
        my $cmd = "kill -9 $oldPID";
        ##start a log string for email and to DB log
        $log .= "$cmd\n";
        print b($cmd);
        $telnet->print($cmd);
        ($output2) = $telnet->waitfor('/[\$>]/');
        $log .= "$output\n";
        $cmd = "ps -ef|grep smuser|grep $oldfunction";
        ##$log .= "$cmd\n";
        $telnet->print($cmd);
        ($output2) = $telnet->waitfor('/[\$>]/');
        $log .= "$output2\n";
        print hr({-width=>'80%'});
        print pre("$output2");
        print hr({-width=>'80%'});
        $output2 =~ /\bsmuser\b +(\d+).+\d +\b$oldfunction\b/ig;
        if ($1 eq ''){
                print "Process Not Running, Page EWAA oncall<br>\n";
                print "Page the EWAA Oncall<br>\n";
                print "<input type=button value='Page EWAA Oncall'
onClick=\"window.open('".$pageLink ."', 'ccwindow', 'left=100, top=700,
height=800, width=700,
dependent=no,directories=no,hotkeys=no,menubar=no,personalbar=no,resizab
le=yes,scrollbars=yes,status=no')\"><br>\n";
        }elsif($1 ne $oldPID){
                $cmd = "Process ID for $oldfunction: $1\n";
                print $cmd;
                $log .= "$cmd\n";
                $cmd = "Service restarted with new PID\n";
                print b($cmd);
                $log .= $cmd .
"<####################################################>";
                print
start_form(-action=>'/Public/_eMail/ProcessMail.php', -method=>'get');
                print hidden(-name=>logResults, -value=>$log);
                print hidden(-name=>SendType, -value=>EWAATool);
                print submit(-name=>Submit, -value=>'Send Auto Email to
EWAA Group');
        }else{
                print "Process did not restart<br>\n";
                print "Page the EWAA Oncall<br>\n";
                print "<input type=button value='Page EWAA Oncall'
onClick=\"window.open('".$pageLink ."', 'ccwindow', 'left=100, top=700,
height=800, width=700,
dependent=no,directories=no,hotkeys=no,menubar=no,personalbar=no,resizab
le=yes,scrollbars=yes,status=no')\"><br>\n";
        }
}
#########end kill Service#############


#####close connection#########
$telnet->print ('exit');
my $ok = $telnet->close;
print "<br>\nEND";

exit;


 
Thanx
Aaron N Wagner
Monitoring Systems and Network Tools
CCO-Command Center Operations
804.515.6298

---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: [EMAIL PROTECTED]
   "   from the digest: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to