[PERL] Aide pour monter des données en ligne dans un tableau
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:
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:
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:
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";
} |