> -----Original Message----- > From: Arnie & Georgia Stender [mailto:aags777@xxxxxxxxxxxx] > Sent: Thursday, December 29, 2005 12:22 PM > To: users@xxxxxxxxxxxxxxxx > Subject: [users@httpd] 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 --> aags777@xxxxxxxxxxxx > 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: users-unsubscribe@xxxxxxxxxxxxxxxx " from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx