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 :

Aide pour super noob


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 17
    Par défaut Aide pour super noob
    Bonjour,
    je travail pour un intégrateur et mon constructeur ma donné cette formule magique pour faire rentrer des hosts et des ips dans des appliances mais je connais pas trop le perl.

    En gros j'ai un fichier de la forme :
    host,ip
    toto,1.1.1.1
    titi,2.2.2.2

    et en utilisant ceci je devrais m'en sortir, j'ai beau lire des tutos quand on a jamais fait de perl c'est un peu compliqué, si qq1 pouvait m'aider ...


    The call to add the host is:
    my $host = Infoblox:NS::Host->new(
    name => "$hostname",
    ipv4addrs => [$ip],
    );

    unless ($host) {
    die("Construct DNS host record failed: ",
    Infoblox::status_code() . ":" . Infoblox::status_detail());
    }
    print "DNS host object created successfully\n";

    #Add the DNS host record object to Infoblox appliance through a session
    $session->add($host)
    or die("Add host record failed: ",
    $session->status_code() . ":" . $session->status_detail());
    print "DNS host object added to server successfully\n";

    where $hostname and $ip are the values you read from the file.

    Cordialement

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 17
    Par défaut
    bon, en piochant a droite et a gauche voila ce que j'ai réussi a faire :

    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
     
    #!c:/perl/bin/perl.exe 
    #package test;
    #use warnings;
    use Infoblox;
     
    my $fic = "c:/liste_ipam.txt";
    open FICH, "$fic";
    while ($ligne = <FICH>){
    my @values = split (",",$ligne);
                      my $host = $values[0]; 
                      my $ip = $values[1];
    	  }
    my $host = Infoblox::DNS::Host->new(
         name         => "$hostname",
         ipv4addrs    => [$ip],
          );
     
     unless ($host) {
        die("Construct DNS host record failed: ",
            Infoblox::status_code() . ":" . Infoblox::status_detail());
     }
     print "DNS host object created successfully\n";
     
     #Add the DNS host record object to Infoblox appliance through a session
     $session->add($host)
         or die("Add host record failed: ",
                $session->status_code() . ":" . $session->status_detail());
          print "DNS host object added to server successfully\n";
    close FICH;
    et j'ai cette erreur :

    C:\Documents and Settings\ludo\Bureau>perl test.pl
    DNS host object created successfully
    Can't call method "add" on an undefined value at test.pl line 25, <FICH> line 3.

  3. #3
    Expert confirmé
    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
    Par défaut
    Pourrais-tu indenter correctement ton code !! Ca ne peut pas t'aider à trouver les erreurs !

    Ta boucle while() est trop courte, tu n'utilises pas le pragma "strict", tu n'initialises pas $session avec une Session Infoblox...

    Je vais nettoyer un minimum ton 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
    #!c:/perl/bin/perl.exe 
    use strict; use warnings;
    use Infoblox;
     
    # initialise $session ici (lis la doc d'Infoblox)
    my $session = ... ;
     
    my $filename = 'c:/liste_ipam.txt';
    open my($file), '<', $filename 
      or die "Couldn't open $filename : $!\n";
     
    while (my $line = <$file>){
        my ($host, $ip) = split /\s*,\s*/, $line;
        $ip =~ s/\s+//g;
     
        my $host = Infoblox::DNS::Host->new(
             name         => "$hostname",
             ipv4addrs    => [$ip],
          );
     
        unless ($host) {
            die("Construct DNS host record failed: ",
                Infoblox::status_code() . ":" . Infoblox::status_detail());
        }
     
        print "DNS host object created successfully\n";
     
        #Add the DNS host record object to Infoblox appliance through a session
        $session->add($host)
          or die("Add host record failed: ",
                 $session->status_code() . ":" . $session->status_detail());
        print "DNS host object added to server successfully\n";
    }
     
    close $file;
    --
    Jedaï

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 17
    Par défaut
    tout d'abord merci pour ton aide.
    Pour répondre a tes questions quand tu me dits que je n'utilise pas le "pragma strict" je vois bien ce que tu veux dire mais pour moi la première chose qui me vient en tête quand tu dis pragma c'est fulguro poing ... bref tu voix ou j'en suis en perl ...

    Sinon effectivement j'ai trouvé comment initialisé la variable $session.

    Il y a quand 2 ou 3 truc que je comprends pas, peux tu m'expliquer ton split ?

    Et j'ai pas compris non plus comment tu peux récupérer les valeurs de $hostname et $ip.

    Pour faire simple j'ai compris que lorsque j'utilise un truc du style @tab=<monfichier> ca me remplit un tableau par contre comment je fait si je veux récupérer la première valeur dans $hostname puis la 2eme dans $ip et la 3eme dans $hostname et ainsi de suite, en fait c'est vraiment la que je bloque.

    Sinon voila le code que j'ai essayé d'indenter cette fois ci

    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
     
    #!c:/perl/bin/perl.exe 
    use strict;
    use warnings;
    use Infoblox;
     
    #Create a session to the Infoblox Appliance
    my $session = Infoblox::Session->new(
    master => "192.168.1.2",
    username => "xxxxx",
    password => "xxxxxxx"
    );
     
    unless ($session) {
    die("Construct session failed: ",
    Infoblox::status_code() . ":" . Infoblox::status_detail());
    }
     
     
    my $filename = 'c:/liste_ipam.txt';
    open my($file), '<', $filename 
      or die "Couldn't open $filename : $!\n";
     
    while (my $line = <$file>){
        my ($host, $ip) = split /\s*,\s*/, $line;
        $ip =~ s/\s+//g;
     
        my $host = Infoblox::DNS::Host->new(
             name         => "$hostname",
             ipv4addrs    => [$ip],
          );
     
        unless ($host) {
            die("Construct DNS host record failed: ",
                Infoblox::status_code() . ":" . Infoblox::status_detail());
        }
     
        print "DNS host object created successfully\n";
     
        #Add the DNS host record object to Infoblox appliance through a session
        $session->add($host)
          or die("Add host record failed: ",
                 $session->status_code() . ":" . $session->status_detail());
        print "DNS host object added to server successfully\n";
    }
     
    close $file;
    pour finir voila les erreurs que j'ai quand je teste le script :

    C:\Documents and Settings\ludo\Bureau>perl test.pl
    "my" variable $host masks earlier declaration in same scope at test.pl line 27.
    Global symbol "$hostname" requires explicit package name at test.pl line 28.
    Execution of test.pl aborted due to compilation errors.


    Merci d'avance

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 17
    Par défaut
    je me réponds a moi même donc pour la première erreur j'avais fait une coquille et confondu la variable $hostname et $host ..
    j'avais ca avant a la ligne 24 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        my ($host, $ip) = split /\s*,\s*/, $line;
    que j'ai remplacé par ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        my ($hostname, $ip) = split /\s*,\s*/, $line;
    par contre j'ai encore une nouvelle erreur :
    C:\Documents and Settings\ludo\Bureau>perl test.pl
    DNS host object created successfully
    Add host record failed: 1012:Action not allowed, parent object invalid.
    Code: IB.Data at test.pl line 40, <$file> line 1.

    bon dans tout les cas ca avance. merci !!!

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 17
    Par défaut
    Ok j'ai trouvé mon pb, en faite il me manquaait une ligne quand je voulais ajouter un host, j'ai a nouveau cherché dans la doc car mon support connaisait pas cette option ... je l'ai rajouté et ca a fonctionné.
    Je repose le script en version final pour ceux que ca pourrait interressé bien que c'est du priopriétaire mais bon :

    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
     
    #!c:/perl/bin/perl.exe 
    use strict;
    use warnings;
    use Infoblox;
     
    #Create a session to the Infoblox Appliance
    my $session = Infoblox::Session->new(
    master => "xxxxxxx",
    username => "xxxxx",
    password => "xxxxxx"
    );
     
    unless ($session) {
    die("Construct session failed: ",
    Infoblox::status_code() . ":" . Infoblox::status_detail());
    }
     
     
    my $filename = 'c:/liste_ipam.txt';
    open my($file), '<', $filename 
      or die "Couldn't open $filename : $!\n";
     
    while (my $line = <$file>){
        my ($hostname, $ip) = split /\s*,\s*/, $line;
        $ip =~ s/\s+//g;
     
        my $host = Infoblox::DNS::Host->new(
             name         => "$hostname",
             ipv4addrs    => [$ip],
    	 configure_for_dns => "false",
          );
     
        unless ($host) {
            die("Construct DNS host record failed: ",
                Infoblox::status_code() . ":" . Infoblox::status_detail());
        }
     
        print "DNS host object created successfully\n";
     
        #Add the DNS host record object to Infoblox appliance through a session
        $session->add($host)
          or die("Add host record failed: ",
                 $session->status_code() . ":" . $session->status_detail());
        print "DNS host object added to server successfully\n";
    }
     
    close $file;
    par contre j'ai toujours pas bien compris comment on recupere les $hostname et $ip si qq1 peux m'expliquer je suis preneur.

    ensuite je marquerai mon topis en résolu.


    Merci a tout le monde

Discussions similaires

  1. [HTML] Aide pour un noob
    Par pierrottt35 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 02/08/2008, 12h48
  2. Encore un noob qui a besoin d'aide pour les formules
    Par efk pharos dans le forum Formules
    Réponses: 5
    Dernier message: 17/01/2007, 01h46
  3. besoin d'aide et de conseils pour un noob
    Par benouille69 dans le forum Flash
    Réponses: 1
    Dernier message: 27/10/2006, 13h06
  4. Une petite aide pour les API ?
    Par Yop dans le forum Windows
    Réponses: 2
    Dernier message: 04/04/2002, 21h45

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