Bonjour à tous,
Complètement amateur en matiere de script perl, j'ai besoin de votre aide sur un point.
J'execute une commande qui me liste un certains nombre d'information en bloc de plusieurs lignes par element. Je souhaite que ces elements soient remontés sur une seule ligne (avec ; comme séparateur).
Voici un exemple de la commande et de son résultat :
Le résultat devrait être :
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 Information of Virtual Machine vmpro1 Name: vmpro1 Host name: vmpro1 IP Address: 192.168.0.1 Guest OS: Windows Information of Virtual Machine vmpro2 Name: vmpro2 Host name: vmpro2 IP Address: 192.168.0.2 Guest OS: RH Information of Virtual Machine vmpro3 Name: vmpro3 Host name: vmpro3 IP Address: 192.168.0.3 Guest OS: CentOS
Je réussi plutot bien à le faire sur la ligne Name par contre, je n'arrive pas à trouvé pour les autres elements.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 vmpro1;vmpro1;192.168.0.1;Windows vmpro2;vmpro2;192.168.0.2;RH vmpro3;vmpro3;192.168.0.3;CentOS
Merci de votre aide.
Voici le bout de code concerné :
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 foreach $var (@esx) { my $LOGFILE_NAME = "/tmp/list_vms.csv"; open(LOG, ">>$LOGFILE_NAME") || die "Unable to open log file $LOGFILE_NAME"; print "Checking $REF->{$var}{'hyperviseur'}..."; my ($arg_cnx) = "--server=$REF->{$var}{'ip_admin'} --username=$REF->{$var}{'login'} --password='$REF->{$var}{'mdp'}'"; my ($script) = "PERL_LWP_SSL_VERIFY_HOSTNAME=0 /usr/lib/vmware-vcli/apps/vm/vminfo.pl"; my ($options) = "--url https://$REF->{$var}{'ip_admin'}/sdk/vimService --fields vmname,hostName,ipAddress,guestFullName"; my ($cmd) = "$script $arg_cnx $options"; print "$cmd\n"; my (@datas) = qx { $cmd }; my $hyper_id = "$REF->{$var}{'eq_id'}\n"; chomp($hyper_id); my $i = 0; foreach my $vm (@datas) { my $vm_eq_id = ''; chomp($vm); $vm =~ s/\s+//g; if ( $vm =~ m/Name:/ ) { $i++; $vm =~ s/Name://g; $vm =~ s/NotKnown/$hyper_id-$i/g; $requete="select a.id from table_equip a where a.Nom = \'$vm\'"; my $prep = $dbh->prepare($requete) or die $dbh->errstr; $prep->execute() or die "Echec requete\n"; while (my @result = $prep->fetchrow_array ) { $vm_eq_id = $result[0]; } print LOG uc("$hyper_id;$i;$vm;$vm_eq_id\n"); } } print "OK\n"; }
Partager