|
| Simpelt CGI ping Fra : Jeppe Ladefoged |
Dato : 21-04-04 20:20 |
|
Jeg mangler et stump kode der, fra serveren, kan pinge en IP addresse.
Den skal være så man kan skrive ".../cgi-bin/ping.pl?ip=addresse" for det
skal bruges sammen med et andet script (Kixstart).
Jeg er total newbie inden for Perl og har kigget på en masse eksempler, men
de virker enten ikke, eller er alt for advancerede.
Resultatet skal hverken være med farver, i tabeller eller andet sjov, bare
simpel HTML med ren tekst.
Er der nogen, der kan skære det ud i pap for mig hvordan man gør?
Der kører ActivePerl på serveren, hvis det har noget at sige.
--
mvh
Jeppe Ladefoged
http://www.underflow.dk
degofedal_spamfilter01@ÆØÅunderflow.dk (Spamfilter: Fjern ÆØÅ)
| |
Adam Sjøgren (21-04-2004)
| Kommentar Fra : Adam Sjøgren |
Dato : 21-04-04 20:43 |
|
On Wed, 21 Apr 2004 21:19:34 +0200, Jeppe wrote:
> Jeg mangler et stump kode der, fra serveren, kan pinge en IP
> addresse. Den skal være så man kan skrive
> ".../cgi-bin/ping.pl?ip=addresse" for det skal bruges sammen med et
> andet script (Kixstart).
> Jeg er total newbie inden for Perl og har kigget på en masse
> eksempler, men de virker enten ikke, eller er alt for advancerede.
> Resultatet skal hverken være med farver, i tabeller eller andet
> sjov, bare simpel HTML med ren tekst.
> Er der nogen, der kan skære det ud i pap for mig hvordan man gør?
Har du prøvet at skrive et script der gør det du vil selv? Hvad har du
prøvet, og hvad var det du ikke kunne få til at virke?
Mvh.
Adam
P.S.:
#!/hfe/ova/crey
hfr fgevpg;
hfr jneavatf;
hfr PTV;
hfr Arg::Cvat;
zl $d=PTV->arj;
zl $c=Arg::Cvat->arj;
zl $vc=$d->cnenz('vc') || '127.0.0.1';
cevag $d->urnqre, $d->fgneg_ugzy('Cvat');
cevag "$vc vf ", $c->cvat($vc) ? 'hc' : 'qbja';
cevag $d->raq_ugzy;
< http://www.rot13.com/>
--
"Computer science is no more about computers than Adam Sjøgren
astronomy is about telescopes." asjo@koldfront.dk
| |
Jeppe Ladefoged (21-04-2004)
| Kommentar Fra : Jeppe Ladefoged |
Dato : 21-04-04 20:50 |
|
> Har du prøvet at skrive et script der gør det du vil selv? Hvad har du
> prøvet, og hvad var det du ikke kunne få til at virke?
Det jeg er nået frem til at mest klippe-klistre, men det ser sådan her ud:
Jeg får en HTTP 500 ud af det. Ping.log filen ser godt nok ud, men når
aldrig frem i browseren.
use strict;
use CGI ':standard';
my ($ip, @results, $i);
$ip = param('ip');
system("ping $ip > ping.log");
open(LOG,"<ping.log");
@results = <LOG>;
close(LOG);
print "Content-type: text/html\n\n";
foreach $i (@results){
print "$i<br>";
}
--
mvh
Jeppe Ladefoged
http://www.underflow.dk
degofedal_spamfilter01@ÆØÅunderflow.dk (Spamfilter: Fjern ÆØÅ)
| |
Adam Sjøgren (21-04-2004)
| Kommentar Fra : Adam Sjøgren |
Dato : 21-04-04 21:01 |
|
On Wed, 21 Apr 2004 21:49:56 +0200, Jeppe wrote:
> Det jeg er nået frem til at mest klippe-klistre, men det ser sådan
> her ud: Jeg får en HTTP 500 ud af det. Ping.log filen ser godt nok
> ud, men når aldrig frem i browseren.
> use strict;
> use CGI ':standard';
> my ($ip, @results, $i);
> $ip = param('ip');
> system("ping $ip > ping.log");
Hvor længe kører "ping" kommandoen på din maskine? På min bliver den
bare ved, med mindre jeg giver den et antal med '-c N'.
> open(LOG,"<ping.log");
Du bør checke retur-værdien af alle kald af open().
Mvh.
--
"Computer science is no more about computers than Adam Sjøgren
astronomy is about telescopes." asjo@koldfront.dk
| |
Jeppe Ladefoged (21-04-2004)
| Kommentar Fra : Jeppe Ladefoged |
Dato : 21-04-04 21:08 |
|
> > use strict;
> > use CGI ':standard';
> > my ($ip, @results, $i);
> > $ip = param('ip');
> > system("ping $ip > ping.log");
>
> Hvor længe kører "ping" kommandoen på din maskine? På min bliver den
> bare ved, med mindre jeg giver den et antal med '-c N'.
Den pinger 4 gange. Ca 3-5 sekunder.
Det er forresten en Windows 2000 Server maskine.
> > open(LOG,"<ping.log");
>
> Du bør checke retur-værdien af alle kald af open().
Æhh, what?
Som sagt er jeg total newbie indenfor Perl.
--
mvh
Jeppe Ladefoged
http://www.underflow.dk
degofedal_spamfilter01@ÆØÅunderflow.dk (Spamfilter: Fjern ÆØÅ)
| |
Adam Sjøgren (21-04-2004)
| Kommentar Fra : Adam Sjøgren |
Dato : 21-04-04 21:41 |
|
On Wed, 21 Apr 2004 22:08:02 +0200, Jeppe wrote:
>> Hvor længe kører "ping" kommandoen på din maskine? På min bliver
>> den bare ved, med mindre jeg giver den et antal med '-c N'.
> Den pinger 4 gange. Ca 3-5 sekunder.
Syret.
Du kan evt. overveje at bruge Net::Ping i stedet for et eksternt
program, men det er måske ikke dit problem her.
>> > open(LOG,"<ping.log");
>>
>> Du bør checke retur-værdien af alle kald af open().
> Æhh, what? Som sagt er jeg total newbie indenfor Perl.
Og programmering i det hele taget, åbenbart.
Et kald til open() kan mislykkes af en hel række årsager. I dit script
bør du checke om kaldet gik godt eller ej.
A la:
open(LOG, '<ping.log') or die "Fejl: $!";
Du kan læse mere om det i dokumentationen til open():
< http://perldoc.com/perl5.8.0/pod/func/open.html>
Der er også en masse eksempler.
Mvh.
--
"Computer science is no more about computers than Adam Sjøgren
astronomy is about telescopes." asjo@koldfront.dk
| |
N/A (21-04-2004)
| Kommentar Fra : N/A |
Dato : 21-04-04 23:54 |
|
| |
Tore Aursand (21-04-2004)
| Kommentar Fra : Tore Aursand |
Dato : 21-04-04 23:54 |
|
On Wed, 21 Apr 2004 21:49:56 +0200, Jeppe Ladefoged wrote:
> use strict;
> use CGI ':standard';
> my ($ip, @results, $i);
> $ip = param('ip');
> system("ping $ip > ping.log");
> open(LOG,"<ping.log");
> @results = <LOG>;
> close(LOG);
> print "Content-type: text/html\n\n";
> foreach $i (@results){
> print "$i<br>";
> }
Hva med å benytte seg av Net::Ping-modulen?
#!/usr/bin/perl
#
use strict;
use warnings;
use CGI;
use Net::Ping;
## Create the CGI object
my $CGI = CGI->new();
## Fetch CGI parameter(s)
my $ip = $CGI->param( 'ip' );
## Ping
if ( $ip ) {
my $Ping = Net::Ping->new();
if ( $Ping->ping($ip) ) {
# Success
}
$Ping->close();
}
--
Tore Aursand <tore@aursand.no>
"Anyone who slaps a 'this page is best viewed with Browser X'-label on
a web page appears to be yearning for the bad old days, before the
web, when you had very little chance of reading a document written on
another computer, another word processor or another network." (Tim
Berners-Lee, July 1996)
| |
Jeppe Ladefoged (22-04-2004)
| Kommentar Fra : Jeppe Ladefoged |
Dato : 22-04-04 20:47 |
|
> Jeg mangler et stump kode der, fra serveren, kan pinge en IP addresse.
> Den skal være så man kan skrive ".../cgi-bin/ping.pl?ip=addresse" for det
> skal bruges sammen med et andet script (Kixstart).
Har fået det til at virke:
use CGI qw/:standard/;
my ($ip, @results, $i);
$ip = param('ip');
print header,
start_html('Ping'),
h1('Ping'),
hr;
system("ping $ip > ping.log");
open(LOG,"<ping.log");
@results = <LOG>;
close(LOG);
foreach $i (@results){
print "$i<br>";
}
--
mvh
Jeppe Ladefoged
http://www.underflow.dk
degofedal_spamfilter01@ÆØÅunderflow.dk (Spamfilter: Fjern ÆØÅ)
| |
|
|