Bonjour,
J'aurais besoin d'une vision nouvelles sur mon scripts car je tourne en rond.
Bon alors :
Je dois récupérer des fichiers de scripts sur un nombres indéterminé de serveurs.
Le nombre de serveur se situe sur un fichier extérieur que je récupère dans @serveur
Comme j'utilise Net::SSh , j'utilise une commande find pour récupérer sur chaque serveur un série de fichier du type
que je met dans un fichier et que ensuite je découpe de la façon suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 -rw-r--r-- 1 gg gg 541 2007-09-26 15:40 .vimrc
je récupérer donc x listes de x serveur, j'ai également une liste @recupTableau qui récupérer tous les fichiers de tous les serveurs et qu'au finale je lui applique un petit code(trouver sur ce forum), pour éliminer les éventuels doublons
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 while ( my $ligne = <FICHIER> ) { ( $droits, $inode, $user, $group, $poids, $dateMois, $dateJour, $dateAnne, $nomFichier ) = split /\s+/, $ligne; push @{ $size[$i] }, $poids; push @{ $utilisateur[$i] }, $user; push @{ $nomDuFichier[$i] }, $nomFichier; push @{ $dateFichier[$i] }, $dateMois . "-" . $dateJour . "-" . $dateAnne; push @recupTableau, $nomFichier; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 my %seen; my @unique = grep { ++$seen{$_} == 1 } @recupTableau;
enfin je veux faire un fichier Excell, pour visualiser quelle fichier se trouve sur quelle serveur.
je vous passe les détails mais j'essaye une triple boucle de ce genre
Mon problème se situe dans la comparaison, en effet dans les colonnes du fichiers je pensais que si le fichier n'existe pas sur un serveur il me laisserais la cellule blanche.
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 #Création des colonnes avec le nom des serveurs for ( $i = 0 ; $i < @serveur ; $i++ ) { $worksheet->write( 0, 2 + $i, $serveur[$i] ); for ( $a = 0 ; $a < @unique ; $a++ ) { for ( $b = 0 ; $b < @{ $nomDuFichier[$i] } ; $b++ ) { if ( $unique[$a] eq $nomDuFichier[$i][$b] ) { $worksheet->write(1 + $b,2 + $i,$nomDuFichier[$i][$b]); next; } } } } for ( $a = 0 ; $a < @unique ; $a++ ) { $worksheet->write( 1 + $a, 0, "$unique[$a]" ); }
mais non il rempli tout à la suite de l'autre, il ne compare pas en fait.
Et là je plane.....................................
merci de votre aide.
MaitrePylos
Partager