Schrift
[thread]552[/thread]

Ping-Befehl über CGI: Fragen zur Syntax



<< >> 3 Einträge, 1 Seite
Gast Gast
 2005-08-18 12:49
#5444 #5444
Hallo....bin ziemlicher Neuling im Bereich Perl.

Hab mal versucht ein Script zu schreiben, dass mir eine in ein Formular eingegeben IP pingt. Hab ne html-Datei mit einem Formlar erstellt, dass meine eingaben entgegen nimmt.
Im <form action=""> hab ich das cgi-script angegeben.
Funktioniert alles soweit...

Kann im cgi-script testweise die eingegeben IP ausgeben.
Das Script sieht folgendermaßen aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!c:\apachefriends\xampp\perl\bin\perl.exe -wT

print "Content-type: text/html\n\n";
print "<html><body>";
my %FORM;
&readForm;

print "Ihre IP: $FORM{ip}<p>"; # Ausgabe der IP-Adresse
print "</body></html>";

print `ping $FORM{'ip'}`; # Dieser Befehl funkt. so nicht


sub readForm &nbs
p; # Parameter in %FORM einlesen
{
my ($buffer,@pairs,@pair,$i);
if ($ENV{'REQUEST_METHOD'} eq "GET")
{ $buffer = $ENV{'QUERY_STRING'}; }
else
{ read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
@pairs = split(/&/, $buffer);
foreach (@pairs)
{
@pair = split(/=/, $_, 2);
for ($i=0;$i<2;$i++)
{
$pair[$i] =~ tr/+/ /;
$pair[$i] =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
}
$FORM{$pair[0]} = $pair[1];
}
}


Gibt es irgendeine besondere Syntax um Variablen in der Befehlszeile aufzurufen? Wenn ich eine feste IP angebe funktioniert das Script.

Danke euch im Voraus für eure Hilfe!!

edit renee: ne Runde [code]-Tags spendiert\n\n

<!--EDIT|renee|1124357071-->
Strat
 2005-08-18 14:15
#5445 #5445
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
verwende besser das Modul CGI anstelle von readForm... das ist nicht vollstaendig und kann sogar als basis fuer sicherheitsluecken dienen...
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!c:\apachefriends\xampp\perl\bin\perl.exe -T
use warnings; # warnungen aktivieren, ist so besser als -w
use strict; # nun muss man variablen mit my deklarieren... gut gegen tippfehler usw.
use CGI; # laedt CGI

# die folgende Zeile gibt warnungen und fehler (soweit moeglich) im browser aus;
# das ist zum entwickeln sehr gut, fuer produktionssysteme sollte man diese
# folgende zeile besser auskommentieren, weil es einem eventuellen hacker
# zu viele infos geben koennte:
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);

# neues cgi-objekt erzeugen
my $cgi = CGI->new();
my %form = $cgi->Vars(); # geht es so nicht kuerzer als die ganze sub?

print $cgi->header(); # content-type: text/html\n\n
print $cgi->start_html(-title => "IP-Adresse"); # html ... body
print $cgi->p("Ihre IP-Adresse: $form{ip}");
...
print $cgi->end_html; # </body></html>

zum Pingen am besten das CPAN-Modul Net::Ping verwenden
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
renee
 2005-08-18 14:17
#5446 #5446
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
das sollte eigentlich funktionieren.

Noch ein paar allgemeine Tipps:
*) Verwende CGI.pm zum Parsen der Formulardaten: http://wiki.perl-community.de/bin....uslesen
*) verwende strict; => http://wiki.perl-community.de/bin/view/Wissensbasis/UseStrict
*) schau Dir mal [cpan]Net::Ping[/cpan ] an...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 3 Einträge, 1 Seite



View all threads created 2005-08-18 12:49.