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 :

Résultat d'une fonction dans une variable


Sujet :

Langage Perl

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2008
    Messages : 231
    Points : 82
    Points
    82
    Par défaut Résultat d'une fonction dans une variable
    Bonjour,

    J'ai un problème avec un plugin écrit en perl pour munin et je connais très très peu le perl. Le but de ce plugin est de récupérer une valeur en snmp puis de la rendre utilisable par rrdtool.

    Mon soucis est avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $df_name = $session->get_single($name_oid);
    get_single lance la requête snmp et arrive parfois que le résultat comporte un . (point) et du coups j'ai l'erreur.
    Use of uninitialized value in concatenation (.) or string at /etc/munin/plugins/snmp_sanctl01_netapp_diskusage_10 line 117.
    Est-ce qu'il y a un moyen pour protéger la variable comme en shell par exemple avec ${ma_var} ?

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    J'ai du mal à comprendre comment tu peux avoir ce warning avec le code que tu présentes. Peux-tu montrer le code avant et après?

  3. #3
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2008
    Messages : 231
    Points : 82
    Points
    82
    Par défaut
    Mieux tout la partie du if

    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
    if (defined $ARGV[0] and $ARGV[0] eq "config") {
        my $df_name = $session->get_single($name_oid);
     
        print "host_name $host\n" unless $host eq 'localhost';
        print "graph_title disk usage on $df_name\n";
        print "graph_args --base 1024 --lower-limit 0\n";
        print "graph_vlabel bytes\n";
        print "graph_category disk\n";
        print "graph_info This graph shows the disk usage for $df_name on NetApp host $host\n";
        print "graph_order used avail total\n";
        print "used.info The total disk space in KBytes that is in use on the $df_name file system.\n";
        print "used.type GAUGE\n";
        print "used.draw AREA\n";
        print "used.label Used\n";
        print "used.cdef used,1024,*\n";
        print "used.min 0\n";
        print "avail.info The total disk space in KBytes that is free for use on the $df_name file system.\n";
        print "avail.type GAUGE\n";
        print "avail.draw STACK\n";
        print "avail.label Available\n";
        print "avail.cdef avail,1024,*\n";
        print "avail.min 0\n";
        print "total.info The total capacity in KBytes for the $df_name file system.\n";
        print "total.type GAUGE\n";
        print "total.draw LINE2\n";
        print "total.label Total\n";
        print "total.cdef total,1024,*\n";
        print "total.min 0\n";
     
        exit 0;
    }
    En regardant un peu plus la ligne 117 correspond à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        print "graph_title disk usage on $df_name\n";

  4. #4
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Bonjour,
    Use of uninitialized value in concatenation (.) or string at /etc/munin/plugins/snmp_sanctl01_netapp_diskusage_10 line 117.
    Es-tu certain que c'est un . (point) qui le gène ?
    Dans la DOC, il semble que les caractères acceptés soient : [a-zA-Z0-9-.] donc avec le point

  5. #5
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2008
    Messages : 231
    Points : 82
    Points
    82
    Par défaut
    Certain non pas vraiment, disons que le message d'erreur me parle de point, la valeur snmp que j'interroge peut contenir des points... ce qui fait beaucoup de coïncidence.

    Les valeurs possible sont des / . - _ et des alphanumeriques. Par exemple : /vol/vm_datastore01. Ce qui est étonnant c'est ça marche sauf pour certain index snmp.

    Par exemple voila un résultat qui marche :
    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
    munin-run --debug snmp_sanctl01_netapp_diskusage_16 config
    # Processing plugin configuration from /etc/munin/plugin-conf.d/amavis
    # Processing plugin configuration from /etc/munin/plugin-conf.d/df
    # Processing plugin configuration from /etc/munin/plugin-conf.d/fw_
    # Processing plugin configuration from /etc/munin/plugin-conf.d/hddtemp_smartctl
    # Processing plugin configuration from /etc/munin/plugin-conf.d/munin-node
    # Processing plugin configuration from /etc/munin/plugin-conf.d/postfix
    # Processing plugin configuration from /etc/munin/plugin-conf.d/sendmail
    # Processing plugin configuration from /etc/munin/plugin-conf.d/snmp
    # Setting /rgid/ruid/ to /99/99/
    # Setting /egid/euid/ to /99 99/99/
    # Setting up environment
    # Environment community = xxxx
    # Environment version = 1
    # About to run '/etc/munin/plugins/snmp_sanctl01_netapp_diskusage_16 config'
    host_name sanctl01
    graph_title disk usage on /vol/vm_datastore01/.snapshot
    graph_args --base 1024 --lower-limit 0
    graph_vlabel bytes
    graph_category disk
    graph_info This graph shows the disk usage for /vol/vm_datastore01/.snapshot on NetApp host sanctl01
    graph_order used avail total
    used.info The total disk space in KBytes that is in use on the /vol/vm_datastore01/.snapshot file system.
    used.type GAUGE
    used.draw AREA
    used.label Used
    used.cdef used,1024,*
    used.min 0
    avail.info The total disk space in KBytes that is free for use on the /vol/vm_datastore01/.snapshot file system.
    avail.type GAUGE
    avail.draw STACK
    avail.label Available
    avail.cdef avail,1024,*
    avail.min 0
    total.info The total capacity in KBytes for the /vol/vm_datastore01/.snapshot file system.
    total.type GAUGE
    total.draw LINE2
    total.label Total
    total.cdef total,1024,*
    total.min 0
    et un qui déconne
    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
    munin-run --debug snmp_sanctl01_netapp_diskusage_10 config
    # Processing plugin configuration from /etc/munin/plugin-conf.d/amavis
    # Processing plugin configuration from /etc/munin/plugin-conf.d/df
    # Processing plugin configuration from /etc/munin/plugin-conf.d/fw_
    # Processing plugin configuration from /etc/munin/plugin-conf.d/hddtemp_smartctl
    # Processing plugin configuration from /etc/munin/plugin-conf.d/munin-node
    # Processing plugin configuration from /etc/munin/plugin-conf.d/postfix
    # Processing plugin configuration from /etc/munin/plugin-conf.d/sendmail
    # Processing plugin configuration from /etc/munin/plugin-conf.d/snmp
    # Setting /rgid/ruid/ to /99/99/
    # Setting /egid/euid/ to /99 99/99/
    # Setting up environment
    # Environment community = xxxx
    # Environment version = 1
    # About to run '/etc/munin/plugins/snmp_sanctl01_netapp_diskusage_10 config'
    host_name sanctl01
    Use of uninitialized value in concatenation (.) or string at /etc/munin/plugins/snmp_sanctl01_netapp_diskusage_10 line 117.
    graph_title disk usage on 
    graph_args --base 1024 --lower-limit 0
    graph_vlabel bytes
    graph_category disk
    Use of uninitialized value in concatenation (.) or string at /etc/munin/plugins/snmp_sanctl01_netapp_diskusage_10 line 121.
    graph_info This graph shows the disk usage for  on NetApp host sanctl01
    graph_order used avail total
    Use of uninitialized value in concatenation (.) or string at /etc/munin/plugins/snmp_sanctl01_netapp_diskusage_10 line 123.
    used.info The total disk space in KBytes that is in use on the  file system.
    used.type GAUGE
    used.draw AREA
    used.label Used
    used.cdef used,1024,*
    used.min 0
    Use of uninitialized value in concatenation (.) or string at /etc/munin/plugins/snmp_sanctl01_netapp_diskusage_10 line 129.
    avail.info The total disk space in KBytes that is free for use on the  file system.
    avail.type GAUGE
    avail.draw STACK
    avail.label Available
    avail.cdef avail,1024,*
    avail.min 0
    Use of uninitialized value in concatenation (.) or string at /etc/munin/plugins/snmp_sanctl01_netapp_diskusage_10 line 135.
    total.info The total capacity in KBytes for the  file system.
    total.type GAUGE
    total.draw LINE2
    total.label Total
    total.cdef total,1024,*
    total.min 0

  6. #6
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Les valeurs possible sont des / . - _ et des alphanumériques.
    Je ne connais pas ce module mais attention cette liste est peut-être seulement valable pour les autres variables.

    il semble que pour graph_title ce soit limité à [a-zA-Z0-9-.]

    Sous toutes réserves, et parce que je ne vois rien d'autre, dans la mesure ou les autres sont renvoyées correctement...

    Effectivement c'est bizarre, hors mis le nombre de _ dans ceux qui déconnent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /etc/munin/plugins/snmp_sanctl01_netapp_diskusage_10 line 117.
    [EDIT 15:25] il semble qu'il y ait pas mal de sujets d'ouverts sur ce type d'erreur, dans Google :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    munin Use of uninitialized value in concatenation (.) or string
    Exemple
    Ton munin est-il à niveau ?

  7. #7
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2008
    Messages : 231
    Points : 82
    Points
    82
    Par défaut
    Je suis sur la version 2.0.24, j'ai vue qu'il y a une 2.0.25 mais pour le moment j'ai pas réussi à mettre la main sur un rpm.

  8. #8
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Merci pour le retour !
    Ne connaissant pas le module, je ne serai plus d'une grande utilité.
    Bonne continuation !

  9. #9
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Maintenant que tu précises la ligne où le warning a lieu, je suis à peu près certain que, tout simplement, la variable $df_name n'est pas définie. Le message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Use of uninitialized value in concatenation (.) or string at
    indique ici tout simplement que tu imprimes une chaîne de caractères nécessitant l'interpolation d'une variable non définie.

    Rien à voir avec un "." dans la valeur retournée par $session->get_single($name_oid). En fait, cette méthode n'a rien renvoyé ou a renvoyé undef.

Discussions similaires

  1. Appel d'une fonction dans une fonction d'une même classe
    Par script73 dans le forum Général Python
    Réponses: 3
    Dernier message: 06/03/2015, 10h18
  2. [XSLT 1.0] Mettre le résultat de l'appel d'une fonction dans une variable
    Par Giovanny Temgoua dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 16/01/2012, 17h47
  3. Réponses: 1
    Dernier message: 14/11/2009, 07h07
  4. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  5. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04

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