IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

[langage] récupérer l'affichage de wget


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Points : 5
    Points
    5
    Par défaut [langage] récupérer l'affichage de wget
    Bonjour à tous !

    Je souhaite ecrire un script perl pour mesurer mes taux de tranferts HTTP (Downloads).

    Pour cela, j'ai pensé effectuer ce transfert avec wget Cependant comment pui-je récuperer la dernière ligne de résultats de wget (ligne ou il y a le taux moyen) ??
    J'ai essayé :

    $var = ` wget $url` ;
    mais ça ne marche pas, la variablke est vide !

    quelqu'un pourrait m'aider ??

    Merci d'avance pour votre aide!

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut Re: récupérer l'affichage de wget
    Bonjour,

    essaie de vérifier s'il y a une erreur retournée à Perl comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    eval {
        $var = `wget $url`;
    };
    warn "problème de retour de wget : $@" if ($@);

  3. #3
    Membre actif
    Avatar de Choupi
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 223
    Points : 235
    Points
    235
    Par défaut
    Place toi dans un contexte de liste : en utilisant @

    je n'ai pas tester mais je pense que ca explique ton problème si tu es sur que wget retourne bien ton information.

    Tiens moi au courant.
    MacOS 10.5 / Ubuntu / C / Python / R
    Pensez au tag résolu

  4. #4
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Merci !

    je vais essayer ce que vous me proposez et vous dis si ça marche ou pas !

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Re-Salut !

    Je viens d'essayer et j'ai
    "Use of uninitialized value"

    je ne vois vraiment pas comment faire et je suis sur que c'est possible !

  6. #6
    Membre actif
    Avatar de Choupi
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 223
    Points : 235
    Points
    235
    Par défaut
    Donne l'integralite de ton script s'il te plait. Ca sera plus facile de corriger.
    MacOS 10.5 / Ubuntu / C / Python / R
    Pensez au tag résolu

  7. #7
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    #!/usr/bin/perl  -w
     
    # Load modules
     
    use Net::MySQL;
    use Date::Manip qw(ParseDate UnixDate);
     
    use Time::HiRes qw( usleep ualarm gettimeofday tv_interval );
     
    use strict;
     
    # Catch the current time UTC
    #
    chomp(my $datestr = `date -u '+%F %R'`);
    print "$datestr\n";
     
     
    # ---------------------------------------------------------------------------
    # Subroutines
    # ---------------------------------------------------------------------------
     
    sub wget_http
    {
    	my $url = shift;
     
        print "Wget fetchs !\n";
     
        my @ret = `wget  $url`;
     
    return @ret;
     
     
    }
     
     
    # ---------------------------------------------------------------------------
    # MAIN LOGIC
     
     
     
    my $url ="http://files10.rarlab.com/rar/rarlinux-3.3.0.tar.gz";
     
    	printf ("Chargement du fichier\n\n");
     
     
    my @var= wget_http($url);
     
    print "Voici la variable de retour : '@var[0]' \n";
     
    # ---------------------------------------------------------------------------
    # END
    # ---------------------------------------------------------------------------
    Bon il n'est pas formidable mais c'est juste déjà pour tester si je peux récupérer la trace d'exécution de wget dans une variable. En fait ce qui m'interrese le plus c'est la dernière ligne où il y a le taux moyen à savoir :
    10:33:42 (13.17 KB/s) - `rarlinux-3.3.0.tar.gz.5' saved [674889/674889]

  8. #8
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Il est très probable que wget renvoie ses informations sur la sortie d'erreur STDERR, or là tu récupère le STDOUT de wget, donc ça marche pas !!

    La solution : rediriger la sortie d'erreur sur la sortie standard, à priori sous linux (bash) ça ne pause aucun problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my @ret = `wget  $url 2>&1`;
    Sinon, tu devrais considérer la solution IPC::Open3.

    --
    Jedaï

  9. #9
    Membre actif
    Avatar de Choupi
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 223
    Points : 235
    Points
    235
    Par défaut
    Citation Envoyé par Jedai
    Il est très probable que wget renvoie ses informations sur la sortie d'erreur STDERR
    Comment deduis tu ça ? Comment le verifier ? Dans la doc je trouve pas.
    MacOS 10.5 / Ubuntu / C / Python / R
    Pensez au tag résolu

  10. #10
    Membre habitué Avatar de Driden
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 146
    Points : 166
    Points
    166
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    #!/usr/bin/perl -w 
     
    # Load modules 
     
    use strict; 
     
    # --------------------------------------------------------------------------- 
    # Subroutines 
    # --------------------------------------------------------------------------- 
     
    sub wget_http 
    { 
        my ($url) = @_; 
     
        print "Wget fetchs !\n"; 
     
        return `wget $url 2>&1`; 
    } 
     
     
    # --------------------------------------------------------------------------- 
    # MAIN LOGIC 
     
     
     
    my $url ="http://www.google.fr"; 
     
     
    my @var = wget_http($url); 
     
    print "Voici la variable de retour : $var[0]";
    Le code ci-dessus fonctionne tres bien et en effet wget envoie les messages sur STDERR par défaut ou dans un fichier avec l'option -o.

  11. #11
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Merci à tous pour votre aide !

    En effet j'ai redirigé le STDERR sur la sortie standard et mainant j'ai accès au rapport de wget !

    merci il ne me reste plus qu'à parserla ligne qui m'interresse

    Merci en core pour votre coup de main !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/09/2009, 14h47
  2. Réponses: 2
    Dernier message: 05/10/2004, 22h43
  3. [langage] Problème d'affichage
    Par marcoss dans le forum Langage
    Réponses: 3
    Dernier message: 29/08/2003, 13h05
  4. [langage]Affichage français!!
    Par jpc_50 dans le forum Langage
    Réponses: 5
    Dernier message: 06/01/2003, 18h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo