/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
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 ÆØÅ)



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste