Announcement

Collapse
No announcement yet.

Modification d'un plugin

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts
    DonKiShoot
    Senior Member

  • DonKiShoot
    replied
    Originally posted by delanoeg
    Je crois que je coince de nouveau, si quelqu'un a un début d'dée elle est la bienvenue . :evil: :evil:

    Disons qu'il me faudrait à l'aide d'une boucle for créer la ligne

    Code:
    RRDs::update $rrd, "$start:".$val[1].":".val[2] ... et aisni de suite;
    Je coince encore pas mal sur les chaînes de caractères et leur manipulation.

    :cry: Merci d'avance.
    my $prov='';

    For my $cpt=1 $cpt<X {
    if ($cpt == 1) then {
    $prov.=$val[$cpt];
    } else {
    $prov.=':'.$val[$cpt];
    }
    $cpt++;
    }

    RRDs::update($rrd,"$start:".$prov);

    Leave a comment:

  • delanoeg
    Junior Member

  • delanoeg
    replied
    Je crois que je coince de nouveau, si quelqu'un a un début d'dée elle est la bienvenue . :evil: :evil:

    Disons qu'il me faudrait à l'aide d'une boucle for créer la ligne

    Code:
    RRDs::update $rrd, "$start:".$val[1].":".val[2] ... et aisni de suite;
    Je coince encore pas mal sur les chaînes de caractères et leur manipulation.

    :cry: Merci d'avance.

    Leave a comment:

  • delanoeg
    Junior Member

  • delanoeg
    replied
    salut

    Merci pour cette réponse rapide, en plus ça marchait presque (il ne fallait pas déclarer les variables à cet endroit plus une ou deux petites choses).


    Je n'avais pas penser à la possibilité des chaînes de caractères pour la ligne sur laquelle sont "stokées" les données


    Voici le code exact pour information et ceux qui souhaiterai faire de même afin d'alléger leur code si il doivent avoir le choix entre 1,2,3 ... source de données (ou variables) dans leur graphique:

    Code:
    my @tab_rrd = ('a'..'z');
    my $lettre;
    my [email protected];
    my [email protected];
    #print @partition;
    my $j;
    ##
    ## RRDTools create rrd
    ##
     my $provisoire='';
           ##
           ## RRDTools create rrd
           ##
           if ($opt_g) {
           if (-e $rrd) {;}
    
           else
           {
               for ($j=0 ; $j<$k ; $j++) {
               $lettre=$tab_rrd[$j];
               $provisoire=$provisoire."DS:$lettre:GAUGE:600:U:U";
            }
    
           RRDs::create ($rrd, "--start",$start-1, "--step",300,$provisoire,
           "RRA:AVERAGE:0.5:1:8440",
           "RRA:MIN:0.5:12:8440",
           "RRA:MAX:0.5:12:8440",
           );
          $ERROR = RRDs::error;
          if ($ERROR) {
             print " unable to create `$rrd': $ERROR\n";
             exit $ERRORS{'UNKNOWN'};
                     }
    }
    }


    Bon je m'attaque à la fin du plugin: permettre la mise à jour de ce rrd là et je fournirai le code si je réussi (je précise que j'ai déjà fait les modifs permettant de faire les calculs pour l'ensemble des partitions sélectionnées: une boucle for et la transformation de certaines variables en tableau plus un peu d'huile de cerveau et de doigts).

    Merci

    Leave a comment:

  • DonKiShoot
    Senior Member

  • DonKiShoot
    replied
    je te conseil de faire le RRD_create sur une seule ligne.

    Utilise tes boucles pour remplir la ligne de commande que tu vas passer à RRD_Create

    Code:
    my @tab_rrd = ('a'..'z');
    my $lettre;
    my [email protected];
    my [email protected];
    print @partition;
    my $j;
    ##
    ## RRDTools create rrd
    ##
    if ($opt_g) {
    if (-e $rrd) {;}
    else
    {
    my $provisoire='';
    for ($j=0 ; $j<$k ; j++) {
    $lettre=$tab_rrd[$count];
    $count=$count - 1;
    $provisoire=$provisoire."DS:$lettre:GAUGE:600:U:U,";
    }
    
    RRDs::create ($rrd, "--start",$start-1, "--step",300,$provisoire
    "RRA:AVERAGE:0.5:1:8440",
    "RRA:MIN:0.5:12:8440",
    "RRA:MAX:0.5:12:8440",
    );
    $ERROR = RRDs::error;
    if ($ERROR) {
    print " unable to create `$rrd': $ERROR\n";
    exit $ERRORS{'UNKNOWN'};
    }
    }
    }
    Je me suis pas foulé mais ca peut te decoincer

    Leave a comment:

  • delanoeg
    Junior Member

  • delanoeg
    replied
    Merci pour ta réponse ceci m'aide grandement;

    Par contre je vais plutôt mettre le tout dans un tableau

    ## Choisir la ou les partitions à afficher et mettre leur numéro dans un tableau
    ($opt_d) || ($opt_d = shift) || ($opt_d = 2);

    my @partition;
    print $opt_d;
    if ($opt_d =~ /([0-9]+)/){
    @partition = split /,\s*/, $opt_d;
    }

    else{
    print "Unknown -d number expected (single number or list : -d 1, 2, 4 ) ... or it doesn't exist, try another disk - number\n";
    exit $ERRORS{'UNKNOWN'};
    }

    Comme je souhaite faire des graphes j'ai essayé de modifier la partie concernant les rrds pour avoir plusieurs source de données dans oreon
    (j'utilise une boucle for pour éviter d'utiliser la méthode bourrin)

    my @tab_rrd = ('a'..'z');
    my $lettre;
    my [email protected];
    my [email protected];
    print @partition;
    my $j;
    ##
    ## RRDTools create rrd
    ##
    if ($opt_g) {
    if (-e $rrd) {;}
    else
    {
    RRDs::create ($rrd, "--start",$start-1, "--step",300,


    for ($j=0 ; $j<$k ; j++) {
    $lettre=$tab_rrd[$count];
    $count=$count - 1;
    "DS:$lettre:GAUGE:600:U:U",
    }
    "RRA:AVERAGE:0.5:1:8440",
    "RRA:MIN:0.5:12:8440",
    "RRA:MAX:0.5:12:8440",
    );
    $ERROR = RRDs::error;
    if ($ERROR) {
    print " unable to create `$rrd': $ERROR\n";
    exit $ERRORS{'UNKNOWN'};
    }
    }
    }

    De cette façon j'ai des erreurs au niveau de la boucle for, mais il semble que ce ne soit pas du à la synthaxe d'ou ma question est ce que je ne m'emele pas les pinceaux.

    Merci d'avance

    Leave a comment:

  • DonKiShoot
    Senior Member

  • DonKiShoot
    replied
    Re: Modification d'un plugin

    Ok voyons ça !

    Tout d'abord on va séparer les partoches par une virgule (c rare des virgules dans un nom de partoche :lol: )
    Code:
    my @partition;
    ## je te laisse corriger la regex en dessous pour prendre en compte la virgule
    if ($opt_d =~ /([0-9]+)/){
        @partition = split(/,/,join(',',$1));
    }
    else{
        print "Unknown -d number or number list (-d 5,4,3,....) \n";
        exit $ERRORS{'UNKNOWN'};
    }

    Leave a comment:

  • delanoeg
    Junior Member

  • delanoeg
    started a topic Modification d'un plugin

    Modification d'un plugin

    Bonjour,

    Je cherche à modifier le plugin check_graph_remote_storage.pl et celui de Patrick Roy (plus récent mais faisant à peu près la même chose hormis le fait de pouvoir choisir des limites en pourcetage ou bytes et de pouvoir faire des checks sur l'espace disponible ou occupé).

    Du coup je me sens un peu limité en Perl:

    en effet ces deux scripts ne permettent de vérifier qu'une partion à la fois ou l'ensemble du disque, hors je voudrais pouvoir faire des mesures sur plus d'une partition à la fois. Dans le plugin check_graph_remote_storage.pl c'est lotion d de la ligne de commande qui permet de spécifier quelle partion sera vérifiée:

    my $partition;
    if ($opt_d =~ /([0-9]+)/){
    $partition = $1;
    }
    else{
    print "Unknown -d number expected... or it doesn't exist, try another disk - number\n";
    exit $ERRORS{'UNKNOWN'};
    }

    Comme je l'ai dit je veux faire les checks sur le nombre de partition que je veux, mais je ne suis pas sur de savoir comment modifier le code.


    Merci d'avance
Working...
X