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 :

probleme avec while Perl


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut probleme avec while Perl
    bonjour,

    je cherche à faire un script qui va me permetre d'automatiser la creation de fichier de config IP pour des clients openvpn.

    detail

    je met le fichier 1 dans un tableau
    je met le fichier 2 dans un tableau

    je fais une boucle qui crée tous les fichier en prenant les noms dans le fichier1
    je fais une boucle qui insere une ligne dans c même fichier en récuperant les données dans le fichier 2

    je ferme les deux fichiers

    pour la creation des fichier tous vas bien.

    par contre je n'arive pas à faire l'insertion corecte des ligne de commande

    mon script (qui ne marche pas):

    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
    #!/usr/bin/perl
     
    @ARGV = ("/ccd/toto/ta");
    @dest = ("/ccd/toto/e");
     
    while ($t = <>)    {
    chomp;
     
    print "$t";
    ####################   creation fichier!!!
    open (ecrire, ">>$t.t");
     
     
    ###################     ecriture de la commande
    while ( $a = @dest)  {
    print ecrire ("ifconfig-push  $a");
    }
    }
    close (ecrire);
    deux probleme:

    le premier les nom de fichier prene la forme $t?.t au lieu de $t.t.

    le deuxieme ca n'insere pas les ligne de commande

    je vous donnes les fichiers de données.


    fichier 1:

    1
    2
    3
    4
    5
    6


    fichier deux:

    10.195.208.1 10.195.208.2
    10.195.208.4 10.195.208.5
    10.195.208.7 10.195.208.8
    10.195.208.10 10.195.208.11
    10.195.208.13 10.195.208.14
    10.195.208.16 10.195.208.17

    en bref le resultat souhaité est:

    creation du fichier 1.t et insertion de la ligne de commande
    ifconfig-push 10.195.208.1 10.195.208.2

    et ainsi de suite!


    j'ai pensé à faire avec un comptage des lignes ou à utiliser l'index du tableau

    en faisant un truc du stile


    je cré le fichier

    je recupere l'index 0 du tableau dest
    j'isere la commande dans le fichier $t.t

    index ++

    la variable index prend la valeur +1 et la boucle reprend

    mais je ne sais pas comment le faire

    je sais pas si j'ai été tres clair

    merci d'avance pour vos reponses.

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut c'est mieux!!!
    bon ca marche mieux
    j'ai résolue le prob 2

    le script:
    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
    #!/usr/bin/perl
    #use strict;
     
    @ARGV = ("/ccd/toto/ta");
    open des, "/ccd/toto/e";
    @dest = <des>;
    $x = $dest [0];
    $i = 0;
     
    #print $x;
    #print $y;
    #print $z;
     
    while ($t = <>)    {
    chomp;
     
    print "$t";
    ####################   creation fichier!!!
    open (ecrire, ">>$t.t");
     
    ###################     ecriture de la commande
     
    print ecrire ("ifconfig-push $x");
    print "ifconfig-puch $x";
     
    $x = $dest[$i++];
     
    }
    close (ecrire);
    par contre le nom de fichier est toujour verolé

    exemple $t.t donne $t?.t

    je cherche
    lol

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut ca marche beaucoup mieux sans retour chariot
    lol

    j'avias mal incrementé chomp
    et il falait metre la variable $i sur 1 pour eviter un decalage.
    lol

    mon probleme est résolue!!!!

    par contre si vous avez des idées pour que je puisse utiliser un seul fichier

    du style:


    1 10.195.208.10 10.195.208.11
    2 10.195.208.7 10.195.208.8

    et obtenir le même résultat je suis preneur!


    lol j'abuse un peut la?


    merci d'avance!!!

Discussions similaires

  1. Probleme avec while read
    Par Erlen dans le forum Shell et commandes GNU
    Réponses: 19
    Dernier message: 04/01/2011, 22h52
  2. Probleme avec while
    Par shomke dans le forum Général Python
    Réponses: 3
    Dernier message: 01/04/2009, 09h34
  3. Problème avec while et paramètres
    Par mittim dans le forum Linux
    Réponses: 4
    Dernier message: 08/08/2006, 10h47
  4. Probleme avec WHILE
    Par beb30 dans le forum C
    Réponses: 14
    Dernier message: 05/04/2006, 14h40
  5. probleme avec script perl grab_tv_fr.pl
    Par ZiMo dans le forum Langage
    Réponses: 6
    Dernier message: 30/11/2005, 17h12

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