-----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&di
re
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&di
re
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&dir
en
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,resiz
ab
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,resiz
ab
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,resiz
ab
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,resiz
ab
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,resiz
ab
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,resiz
ab
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,resiz
ab
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]