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 :

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
Le résultat devrait être :

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
Je réussi plutot bien à le faire sur la ligne Name par contre, je n'arrive pas à trouvé pour les autres elements.

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";
}