Can you paste an example e.g.: Alias /perl/ "/usr/local/apache2/perl/" <Location /perl> SetHandler perl-script PerlHandler Apache::Registry PerlSendHeader On Options ExecCGI </Location> Or whatever you have. Boysenberry boysenberrys.com | habitatlife.com | selfgnosis.com On Dec 29, 2005, at 1:39 PM, Arnie & Georgia Stender wrote:
Hi Aaron,I'm sorry, I must not have expressed myself properly. I'm not having a problem with parsing the data, I'm not getting any data to parse. The server is not sending anything (CONTENT_LENGTH->0) to the STDIN of the script nor is it setting the QUERY_STRING environment variable. I think I have a server configuration issue but I can't find any place to turn it on. From everything I have read passing the data should be automatic once you have got the server configured to run the CGI. I also don't know enough about the inner workings of Apache to know for sure if it is actually configuration or if maybe it's the way I wrote the HTML. My form tag looks like everything I have seen in the books I have. <form method="POST" action="/cgi-bin/env.pl"> From what I have, that should do it for the HTML end of things.Arnie Wagner, Aaron wrote:-----Original Message-----From: Arnie & Georgia Stender [mailto:aags777@xxxxxxxxxxxx] Sent: Thursday, December 29, 2005 12:22 PMTo: 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 --> 0HTTP_ACCEPT --> text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5SCRIPT_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 --> 34615HTTP_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.3SERVER_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.localHere 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&di rent=G00002002&Ntype=U"; my $pageLinkSev2 ="http://esystems.bankofamerica.com/Tools/_PagingForm/pagingform.php? mess =Oncall%3APlease%20call%20eSystems%20re%3A%20EWAA%20sev%202%20issue&di rent=G00002002&Ntype=U"; #my $function = "diskspace"; #my $remoteServer = "cwartxd01"; ##$function options = ping, diskspace, CPU, smservauth, smservaz, smservadm, smservacct ## page group linkhttp://esystems.bankofamerica.com/Tools/_PagingForm/pagingform.php? mess= Oncall%3APlease%20call%20eSystems%20re%3A%20EWAA%20sev%201%20issue&dir ent=G00002002&Ntype=Uif (($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,resiz able=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,resiz able=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,resiz able=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,resiz able=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,resiz able=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=$function&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,resiz able=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,resiz able=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---------------------------------------------------------------------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
--------------------------------------------------------------------- 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