Bonjour,
je suis nouveau de le forum et aussi dans le monde perl,et j'ai besoin de traiter le resultat d'une commande (c'est une commande Tivoli pour generer des inventaires srv) pour les mettres en formes dans un tableau .
voici le type de données que me renvoi le srv :
Query Name: WEB_NATIV_SWARE_QUERY ==> nom de la query executée (cette ligne doit etre supprimée dans l'affichage)TME_OBJECT_LABEL|PACKAGE_NAME|PACKAGE_VERS ==> Ligne comportant le nom des colonnes
itiva_ep|Batch Operations|4.3.3.78 ==> ligne inventaire pour une machine
psta|Netscape Communicator Help - U.S. English|4.7.5.0==> ligne inventaire pour une autre machine
la colonne TME_OBJECT represente le nom du serveur inventorié et doit etre affiche en haut de chaque tableau (un tableau par machine)
mais ne doit pas apparaitre à l'interieur de ce meme tableau .
Mais la partie importante à savoir est que en fonction de l'inventaire le nombre de colonnes peu changer.
ci -joint la partie d'une page cgi qui genere en html un tableau (mais avec des colonnes fixes)
#!/usr/bin/perl
#
##################################################################################
#
# OUTIL D'INVENTAIRE WEB Tivoli Inventory
#
# Laurent 04/09/2006
#
##################################################################################
##########
# VAR #
##########
if ($ENV{REQUEST_METHOD} eq "GET" ) {
$InputArgs = $ENV{QUERY_STRING};
} else {
$CONTENT_LENGTH = $ENV{'CONTENT_LENGTH'};
read(STDIN, $InputArgs, $CONTENT_LENGTH);
}
$Task="";
$Host="";
$TaskOption="";
$page_inv="/usr/local/Tivoli/HTTPTiv/AdminPo/admin-cgi/inventory.html";
$queryLib=`. /etc/Tivoli/setup_env.sh ; wls \@QueryLibrary:itiva.Inventory_Query_ql`;
@QueryLib=split(/\n/,$queryLib);
$aix_system=`. /etc/Tivoli/setup_env.sh ; wlsendpts \@ProfileManager:itiva.INV.aix4-r1-Hardware_scan_pm | awk {'print \$1'}`;
@Aix_system=split(/\n/,$aix_system);
$linux_system=`. /etc/Tivoli/setup_env.sh ; wlsendpts \@ProfileManager:itiva.INV.linux-ix86-Hardware_scan_pm | awk {'print \$1'}`;
@Linux_system=split(/\n/,$linux_system);
$win_system=`. /etc/Tivoli/setup_env.sh ; wlsendpts \@ProfileManager:itiva.INV.w32-ix86-Hardware_scan_pm | awk {'print \$1'}`;
@Win_system=split(/\n/,$win_system);
##########
# SUB #
##########
sub RecupArgs {
@Args=split(/&/,$InputArgs);
foreach $_ (@Args) {
$arg=$_;
#print "ARG : $arg\n";
if ( $arg =~ /HOST=/ ) {
$arg =~ s/HOST=//;
$Host=$arg;
} elsif ( $arg =~ /QUERY=/ ) {
$arg =~ s/QUERY=//;
$Query=$arg;
} elsif ( $arg =~ /QueryType=/ ) {
$arg =~ s/QueryType=//;
$QueryOption=$arg;
}
}
}
sub InvHome {
open(FH_PAGE_INV,"<$page_inv" );
while (<FH_PAGE_INV> ) {
$ligne=$_;
if ( $ligne =~ /ENDPOINT/ ) {
print "<OPTION> ## AIX ##";
foreach $_ (@Aix_system) {
$opt=$_;
print "<OPTION> $opt\n";
}
print "<OPTION> ## LINUX ##";
foreach $_ (@Linux_system) {
$opt=$_;
print "<OPTION> $opt\n";
}
print "<OPTION> ## WINDOWS ##";
foreach $_ (@Win_system) {
$opt=$_;
print "<OPTION> $opt\n";
}
} elsif ( $ligne =~ /QUERY_TYPE/ ) {
foreach $_ (@QueryLib) {
$opt=$_;
print "<OPTION> $opt\n";
}
}else {
print "$ligne\n";
}
}
close(FH_PAGE_INV);
}
sub RunQuery {
#$query_host=`. /etc/Tivoli/setup_env.sh ; wqueryinv -n -d \"|\" -q \@$Query $Host `;
$query_host=`. /etc/Tivoli/setup_env.sh ; wqueryinv -d \"|\" -q \@$Query $Host `;
@Query_host=split(/\n/,$query_host);
$title=@Query_host[1];
@TITLE= split(/\n/, $title);
shift @inv;
$Entete= shift @inv;
print "$Entete\n";
SPLIT: foreach $ligne (@inv) {
print "$ligne\n";
}
print "<H1 align='center'> Serveur : $Host </H1>";
#print "<TABLE BORDER='1' align='center' bordercolor='#FFFFFF' bordercolorlight='#99FFFF' bgcolor='#FF6600'><TR><TH width=404' bgcolor='#FFFFFF'>PRODUIT<\/TH><TH div align='center' bgcolor='#FFFFFF'>VERSION<\/TH><\/TR>";
print "<TABLE BORDER='1' align='center' bordercolor='#FFFFFF' bordercolorlight='#99FFFF' bgcolor='#FF6600'><TR><TH width=404' bgcolor='#FFFFFF'>PRODUIT<\/TH><TH div align='center' bgcolor='#FFFFFF'>VERSION<\/TH><\/TR>";
foreach $_ (@Query_host) {
$ligne=$_;
@Ligne=split(/\|/,$ligne);
$Ep=shift(@Ligne);
$Product=shift(@Ligne);
$Version=shift(@Ligne);
print "<TR><TD>$Product<\/TD><TD align='center'>$Version<\/TD><\/TR>";
}
print "<\/TABLE>";
}
##########
# MAIN #
##########
print "Content-Type: text/html\n\n";
# RECUPERATION DES ARGUMENT DE LA PAGE WEB
&RecupArgs;
# AFFICHAGE DES INDICATEURS
if ( $QueryOption =~ /RunQuery/ ) {
&RunQuery;
} else {
&InvHome;
}
merci
Message édité par chewbaka2 le 17-09-2006 à 12:08:54