open TRACE, "/usr/sbin/traceroute apple.com|" or die "can't fork : $!" ;
my $connection = "unknown" ;
LOOP: while (<TRACE>) {
if (m/edpnet/) {
# we are connected through edpnet
$connection = "edpnet" ;
last LOOP ;
} else {
if (m/fulladsl/) {
# we are connected through fulladsl
$connection = "fulladsl" ;
last LOOP ;
}
}
} ;
close TRACE ;
print ("Connected through $connection") ;
========================================
Le script fonctionne , seulement quand je le démarre il génère du output
sur le terminal que je voudrais supprimer. Je suppose que c'est envoyé
vers STDOUT ou STDERR . Comment je fais pour éviter que cela ne soit
imprimer sur le terminal ? (sauf le output de ma commande 'print' à la
fin)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
kurtz le pirate
In article , Flatman wrote:
::J'ai écris un script qui appelle la commande 'traceroute' ::voici le script : :: ::======================================= ::#! /usr/bin/perl :: ::use strict ; :: ::open TRACE, "/usr/sbin/traceroute apple.com|" or die "can't fork : $!" ; :: ::my $connection = "unknown" ; :: ::LOOP: while (<TRACE>) { :: if (m/edpnet/) { :: # we are connected through edpnet :: $connection = "edpnet" ; :: last LOOP ; :: } else { :: if (m/fulladsl/) { :: # we are connected through fulladsl :: $connection = "fulladsl" ; :: last LOOP ; :: } :: } ::} ; :: ::close TRACE ; :: ::print ("Connected through $connection") ; ::======================================= :: ::Le script fonctionne , seulement quand je le démarre il génère du output ::sur le terminal que je voudrais supprimer. Je suppose que c'est envoyé ::vers STDOUT ou STDERR . Comment je fais pour éviter que cela ne soit ::imprimer sur le terminal ? (sauf le output de ma commande 'print' à la ::fin)
dans le terminal on peux faire un truc du genre : la_commane >null 2>&1 pour rediriger les stout et sterr vers rien. par contre, je pense qu'il doit y avoir beaucoup d'autres moyen de faire un traceroute en perl.
#!/usr/bin/perl -w use strict;
my $command = "traceroute www.free.fr"; my @allLines = `$command`; chomp(@allLines);
my $oneLine; foreach $oneLine (@allLines) { ... }
mais je suis aussi un grand débutant en perl, donc ce n'est qu'une toute petite idée :))
In article <m24q70mwce.fsf@flatsoft.no-ip.info>,
Flatman <flatman@swing.be> wrote:
::J'ai écris un script qui appelle la commande 'traceroute'
::voici le script :
::
::======================================= ::#! /usr/bin/perl
::
::use strict ;
::
::open TRACE, "/usr/sbin/traceroute apple.com|" or die "can't fork : $!" ;
::
::my $connection = "unknown" ;
::
::LOOP: while (<TRACE>) {
:: if (m/edpnet/) {
:: # we are connected through edpnet
:: $connection = "edpnet" ;
:: last LOOP ;
:: } else {
:: if (m/fulladsl/) {
:: # we are connected through fulladsl
:: $connection = "fulladsl" ;
:: last LOOP ;
:: }
:: }
::} ;
::
::close TRACE ;
::
::print ("Connected through $connection") ;
::======================================= ::
::Le script fonctionne , seulement quand je le démarre il génère du output
::sur le terminal que je voudrais supprimer. Je suppose que c'est envoyé
::vers STDOUT ou STDERR . Comment je fais pour éviter que cela ne soit
::imprimer sur le terminal ? (sauf le output de ma commande 'print' à la
::fin)
dans le terminal on peux faire un truc du genre :
la_commane >null 2>&1
pour rediriger les stout et sterr vers rien. par contre, je pense qu'il
doit y avoir beaucoup d'autres moyen de faire un traceroute en perl.
#!/usr/bin/perl -w
use strict;
my $command = "traceroute www.free.fr";
my @allLines = `$command`;
chomp(@allLines);
my $oneLine;
foreach $oneLine (@allLines) {
...
}
mais je suis aussi un grand débutant en perl, donc ce n'est qu'une toute
petite idée :))
::J'ai écris un script qui appelle la commande 'traceroute' ::voici le script : :: ::======================================= ::#! /usr/bin/perl :: ::use strict ; :: ::open TRACE, "/usr/sbin/traceroute apple.com|" or die "can't fork : $!" ; :: ::my $connection = "unknown" ; :: ::LOOP: while (<TRACE>) { :: if (m/edpnet/) { :: # we are connected through edpnet :: $connection = "edpnet" ; :: last LOOP ; :: } else { :: if (m/fulladsl/) { :: # we are connected through fulladsl :: $connection = "fulladsl" ; :: last LOOP ; :: } :: } ::} ; :: ::close TRACE ; :: ::print ("Connected through $connection") ; ::======================================= :: ::Le script fonctionne , seulement quand je le démarre il génère du output ::sur le terminal que je voudrais supprimer. Je suppose que c'est envoyé ::vers STDOUT ou STDERR . Comment je fais pour éviter que cela ne soit ::imprimer sur le terminal ? (sauf le output de ma commande 'print' à la ::fin)
dans le terminal on peux faire un truc du genre : la_commane >null 2>&1 pour rediriger les stout et sterr vers rien. par contre, je pense qu'il doit y avoir beaucoup d'autres moyen de faire un traceroute en perl.
#!/usr/bin/perl -w use strict;
my $command = "traceroute www.free.fr"; my @allLines = `$command`; chomp(@allLines);
my $oneLine; foreach $oneLine (@allLines) { ... }
mais je suis aussi un grand débutant en perl, donc ce n'est qu'une toute petite idée :))
Flatman
* kurtz le pirate wrote: | | my $command = "traceroute www.free.fr"; | my @allLines = `$command`; | chomp(@allLines); | | my $oneLine; | foreach $oneLine (@allLines) { | ... | }
le problème c'est que le script va attendre que traceroute ait terminé ! Ma variante traite le output au fur et à mesure que traceroute s'exécute ...
-- Erik
* Life is wonderful with Emacs and Perl *
* kurtz le pirate <kurtzlepirate@yahoo.fr> wrote:
|
| my $command = "traceroute www.free.fr";
| my @allLines = `$command`;
| chomp(@allLines);
|
| my $oneLine;
| foreach $oneLine (@allLines) {
| ...
| }
le problème c'est que le script va attendre que traceroute ait terminé !
Ma variante traite le output au fur et à mesure que traceroute s'exécute ...
* kurtz le pirate wrote: | | my $command = "traceroute www.free.fr"; | my @allLines = `$command`; | chomp(@allLines); | | my $oneLine; | foreach $oneLine (@allLines) { | ... | }
le problème c'est que le script va attendre que traceroute ait terminé ! Ma variante traite le output au fur et à mesure que traceroute s'exécute ...
-- Erik
* Life is wonderful with Emacs and Perl *
Jogo
Sur fr.comp.lang.perl, Flatman clavardait ainsi :
Le script fonctionne , seulement quand je le démarre il génère du output sur le terminal que je voudrais supprimer. Je suppose que c'est envoyé vers STDOUT ou STDERR .
Surement STDERR, puisque tu récupère STDOUT dans le tube.
Comment je fais pour éviter que cela ne soit imprimer sur le terminal ? (sauf le output de ma commande 'print' à la fin)
Je pense qu'un truc comme ça juste avant le fork devrait marcher (pas testé) : close STDERR ; open STDERR,">>","/dev/null" ;
Sur fr.comp.lang.perl, Flatman clavardait ainsi :
Le script fonctionne , seulement quand je le démarre il génère du output
sur le terminal que je voudrais supprimer. Je suppose que c'est envoyé
vers STDOUT ou STDERR .
Surement STDERR, puisque tu récupère STDOUT dans le tube.
Comment je fais pour éviter que cela ne soit
imprimer sur le terminal ? (sauf le output de ma commande 'print' à la
fin)
Je pense qu'un truc comme ça juste avant le fork devrait marcher (pas testé) :
close STDERR ;
open STDERR,">>","/dev/null" ;
Le script fonctionne , seulement quand je le démarre il génère du output sur le terminal que je voudrais supprimer. Je suppose que c'est envoyé vers STDOUT ou STDERR .
Surement STDERR, puisque tu récupère STDOUT dans le tube.
Comment je fais pour éviter que cela ne soit imprimer sur le terminal ? (sauf le output de ma commande 'print' à la fin)
Je pense qu'un truc comme ça juste avant le fork devrait marcher (pas testé) : close STDERR ; open STDERR,">>","/dev/null" ;
Jean-Sébastien
Le Sat, 29 Oct 2005 12:49:37 +0200, Flatman a écrit :
[...]
Le script fonctionne , seulement quand je le démarre il génère du output sur le terminal que je voudrais supprimer. Je suppose que c'est envoyé vers STDOUT ou STDERR . Comment je fais pour éviter que cela ne soit imprimer sur le terminal ? (sauf le output de ma commande 'print' à la fin) [...]
Ton programme récupère la sortie standard (STDOUT) pour l'analyser, mais il laisse la sortie d'erreur (STDERR) s'afficher dans le terminal. Il suffit donc de fermer STDERR avant de lancer le traceroute et tu ne verra plus la ligne parasite, mais tu continuera a voir ton print qui s'affiche sur STDOUT par défaut.
#! /usr/bin/perl
use strict ;
close STDERR; open TRACE, "/usr/sbin/traceroute apple.com|" or die "can't fork : $!" ;
my $connection = "unknown" ;
LOOP: while (<TRACE>) {
[...]
Le Sat, 29 Oct 2005 12:49:37 +0200, Flatman a écrit :
[...]
Le script fonctionne , seulement quand je le démarre il génère du output
sur le terminal que je voudrais supprimer. Je suppose que c'est envoyé
vers STDOUT ou STDERR . Comment je fais pour éviter que cela ne soit
imprimer sur le terminal ? (sauf le output de ma commande 'print' à la
fin)
[...]
Ton programme récupère la sortie standard (STDOUT) pour l'analyser, mais
il laisse la sortie d'erreur (STDERR) s'afficher dans le terminal. Il
suffit donc de fermer STDERR avant de lancer le traceroute et tu ne verra
plus la ligne parasite, mais tu continuera a voir ton print qui s'affiche
sur STDOUT par défaut.
#! /usr/bin/perl
use strict ;
close STDERR;
open TRACE, "/usr/sbin/traceroute apple.com|" or die "can't fork : $!" ;
Le Sat, 29 Oct 2005 12:49:37 +0200, Flatman a écrit :
[...]
Le script fonctionne , seulement quand je le démarre il génère du output sur le terminal que je voudrais supprimer. Je suppose que c'est envoyé vers STDOUT ou STDERR . Comment je fais pour éviter que cela ne soit imprimer sur le terminal ? (sauf le output de ma commande 'print' à la fin) [...]
Ton programme récupère la sortie standard (STDOUT) pour l'analyser, mais il laisse la sortie d'erreur (STDERR) s'afficher dans le terminal. Il suffit donc de fermer STDERR avant de lancer le traceroute et tu ne verra plus la ligne parasite, mais tu continuera a voir ton print qui s'affiche sur STDOUT par défaut.
#! /usr/bin/perl
use strict ;
close STDERR; open TRACE, "/usr/sbin/traceroute apple.com|" or die "can't fork : $!" ;