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 :

Pourquoi m'insulte t'il ?


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 9
    Par défaut Pourquoi m'insulte t'il ?
    Bonjour,

    je voulais me faire un petit script en perl (que je ne maitrise pas vraiment) pour envoyer des fichiers en local sur mon poste vers des serveurs.

    Mes insultes
    Use of uninitialized value in array element at D:\Utils\Deploiement_scripts.pl line 46, <> line 1.
    Use of uninitialized value in string at D:\Utils\Deploiement_scripts.pl
    line 46, <> line 1.
    Use of uninitialized value in concatenation (.) or string at D:\Utils\Deploi
    ement_scripts_prc.pl line 46, <> line 1.
    Use of uninitialized value in concatenation (.) or string at D:\Utils\Deploi
    ement_scripts.pl line 46, <> line 1.
    Use of uninitialized value in concatenation (.) or string at D:\Utils\Deploi
    ement_scripts.pl line 46, <> line 1.
    put , /TOOLS/scripts/No such file or directory
    voici le 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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    #"!/usr/bin/perl
    use warnings;
    use strict;
    use DBI;
    use Net::SSH2;
    use File::Basename;
    use File::Find;
     
    ############### Parametres ########################################################
    my $BaseDeDonnees = "la base";
    my $NomHote       = "serv";
    my $login         = "XXX";
    my $MotDePass     = "XXXX";
    my $port          = "3306";
    my $REP_DIST      = "/TOOLS/scripts";
    my $REP_LOC       = "d:/TOOLS/scripts";
    my $req;
    my $HOSTNAME;
    my $serv;
    my @LISTE_FILES;
     
    my $user = $ENV{USERNAME};
    print "$user\n";
    print "Votre MDP : ";
    	chomp( my $MDP = <> );
     
     
    ########################## Script ##################################################
    my $count = 1;
    find( { wanted => \&list_files, }, $REP_LOC );
    my $dbh = DBI->connect( "dbi:mysql:dbname=$BaseDeDonnees;host=$NomHote;port=$port",	$login, $MotDePass )
      or die "Connection impossible a la base de donnees $BaseDeDonnees !";
      $req = $dbh->prepare("select NAME_SERVER from LIST;");
       	$req->execute() or die "Echec requete\n";
        	while (my @row = $req->fetchrow_array){
             print "$row[0]\n";
             $serv = $row[0];
             my $ssh2 = Net::SSH2->new();
    	       $ssh2->connect($serv) or die "Can't connect to $serv: $!\n";
    	       $ssh2->auth_password( $user, $MDP )
    	         or die "Authentication failed: $!\n";
    	       my $chan1 = $ssh2->channel();
             $chan1->exec("mkdir -p $REP_DIST") or die "1 $!\n";	
    	       #  $chan1->close;
    	       foreach my $v (@LISTE_FILES) {
     
                $ssh2->scp_put( "$LISTE_FILES[$v][1]", "$REP_DIST/$LISTE_FILES[$v][2]" )
    		        or die "put $LISTE_FILES[$v][1], $REP_DIST/$LISTE_FILES[$v][2]$ !\n";
    	       }
             $chan1 = $ssh2->channel();
    	       $chan1->exec("chmod -R 775 $REP_DIST") or die "3 $!\n";
          }
     
    ############   Fonction ##############
     
    sub list_files {
    	if ( -f $File::Find::name && /\.*$/i ) {
    		$LISTE_FILES[$count][1] = $File::Find::name;
    		$LISTE_FILES[$count][2] = $_;
    		print "$count : $LISTE_FILES[$count][1] - $LISTE_FILES[$count][2]\n";
    		$count++;
    		}
    }
    Merci d'avance pour les lumières que vous pourrez m'apporter

  2. #2
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    comme les messages d'erreur l'indiquent, tu utilises une valeur non initialisée dans une concaténation.
    Et en effet, avec la dernière ligne on peut voir que ton ne ramène rien. Donc c'est par là qu'il faut chercher

    EDIT: j'ai regardé un peu plus et y'a pas mal de choses qui vont pas
    déjà les tableaux commencent à l'indice 0, ce qui fait que le premier élément testé dans le foreach est toujours undef, ce qui donne l'erreur que tu as.
    Ensuite tu stockes des listes dans @FILE_LISTE, mais tu t'attends à des indices pour ton foreach ! les $v sont des listes, il te faut les traiter correctement en tant que telle... d'ailleurs elles ne sont pas correctement créées non plus...

    je te laisse travailler un peu ça, si tu as d'autres questions...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 9
    Par défaut
    effectivement c'est n'importe quoi...
    j' ai tellement modifier le script pour qu'il marche que j'ai pas vu cette énormité

    il faut que je fasse une boucle sur la longueur du tableau ou que je traite v comme une liste mais pas un melange des 2

    Merci beaucoup

Discussions similaires

  1. [Templates] Quel système utilisez-vous ? Pourquoi ?
    Par narmataru dans le forum Bibliothèques et frameworks
    Réponses: 270
    Dernier message: 26/03/2011, 00h15
  2. Que choisir ? C# , VB.NET, C++, Delphi ? pourquoi ?
    Par Louis-Guillaume Morand dans le forum Général Dotnet
    Réponses: 475
    Dernier message: 08/04/2010, 19h27
  3. Programmer encore en VB 6 c'est pas bien ? Pourquoi ?
    Par Nektanebos dans le forum Débats sur le développement - Le Best Of
    Réponses: 85
    Dernier message: 10/03/2009, 14h43
  4. Pourquoi ces directives #ifndef ... en haut des .h
    Par Patrick PETIT dans le forum C
    Réponses: 8
    Dernier message: 06/03/2003, 23h53

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