-----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]