sub main () {
#Verwendete Module
use Spreadsheet::WriteExcel; #Modul für die Erstellung von Excel-Dateien
#Variablendeklaration
@ergebnis;
my $dateiname_match = 'match.txt'; #Match-Datei fuer Aufsummieren zwischen CCM und Softguard
my @sum_komponenten_ccm; #Aufsummierte Anzahl der Komponenten CCM
my @sum_komponenten_sg; #Aufsummierte Anzahl der Komponenten SG
my $datum; #Datum wann Dateien erstellt wurden
my $zeit; #Zeit wann Dateien erstellt wurden
@auswahl; #Getroffene Auswahl von Auswahl.html
@bool_auswahl; #Array, mit Boolean Werten, ob in Auswahl Feld gewählt wurde. Gleicher Aufbau wie CCM und Softguard Abgleich
@vorgabe_ueberschrift = ("sg.Device" ,"sg.DNS", "sg.Status", "sg.sysDescription", "sg.sysContact", "sg.sysName", "sg.sysLocation", "sg.SNr",
"sg.FirstReport", "sg.LastReport", "ccm.Identitaet", "ccm.Klasse", "ccm.Hersteller", "ccm.Typ", "ccm.Subtyp", "ccm.Ort", "ccm.Gelaende",
"ccm.Gebaeude", "ccm.Etage", "ccm.Raum", "ccm.Prefix", "ccm.Postfix", "ccm.Sortierung", "ccm.SNr", "ccm.Status", "ccm.Abgleichskriterium");
#Softguard
@softguard; #Daten von Softguard
@copy_softguard;
my @wrong_sysall; #Fehlerliste für syscontact, syslocation, sysname
my $datenbank = "SoftGuard"; #Bezeichnung der Datenenbank
my $benutzer = "root"; #Benutzer der Datenbank
my $pw = "sg24audi"; #PW des Datenbankusers
my $max_tage = 28; #Maximale Anzahl der Tage, welche seit letzten Report vergangen sein dürfen
#CCM
@ccm; #Daten von CCM
@copy_ccm;
my $datei_ccm = "ccm.txt"; #Bezeichnung der Datei von CCM
my @auswahl_typ = ('6C105', 'AP-3', '1G582-09', '1G587-09', '1G694-13', '1H582-25', '1H582-51', '2E252-49R', '2E253-49R', '2E43-27R', '2H252-25R', '2H253-25R', '2H258-17R',
'MicroMMAC-24E', 'MINI-MMAC', 'MMAC-M8FNB', 'MMAC5-FNB', 'SEHI-24', 'Smart Switch 2200', 'SSR-16', 'SSR-8', 'STHI-24', 'V2H124-24', 'VH-2402SM', 'AL1001B01',
'AL1001B02', 'AL2001A15', 'AL2001B15', 'AL2001B20', 'AL2012A14', 'AL2012B19', 'AL2012B34', 'AL4512B01', 'DJ1402001', 'DS1402001', 'DS1402002', 'EB1404015', 'EB1412003',
'IP 330', 'IP 350', 'IP 380', 'IP 440', 'IP 530', 'NBB3740000', '6E123-26', '6E233-49', '6G306-06', '6H202-24', '6H203-24', '6H252-17', '6H253-13',
'6H258-17', '6H303-48', '6H308-24', '6H308-48', '6H352-25', '7H4382-49', '9C300-1', '9C306', '9C406', '9E106-06', '9E132-15', '9E423-36', '9F206-02', '9F241-12',
'9F426-02', '9F426-03', '9H421-12', '9H422-12', '9H423-28', 'EMME', 'FOMIM-22', 'FOMIM-26', 'FORMIM-22', 'Alteon', 'Base Director', 'SA7225', 'SG 800-2', 'SG 800-3',
'1600', '2501', '2503', '2504', '2612', '7000', '803', 'AGS', 'NSM', 'Backbone Concentrator Node', 'Backbone Link Node');
print "Content-type: text/html\n\n";
#Uebergebene Argumente empfangen
read(STDIN, my $tmp, $ENV{'CONTENT_LENGTH'}); #Uebergebenes post lesen
@post_uebergabe = split(/&/, $tmp);
#Uebergebene Daten aufsplitten
foreach(@post_uebergabe) {
($data, $tmp) = split (/=/, $_);
push @auswahl, $data;
}
delete ($auswahl[-1]); #Letztes Element ist ok von Buttonklick -->loeschen
#Einlesen der Daten
chdir ("/usr/local/apache/htdocs/audi_zusatz/"); #Vezeichnis wechseln
&get_softguard(\$datenbank, \$benutzer, \$pw, \$max_tage);
&get_ccm(\$datei_ccm, \@auswahl_typ);
#ABGLEICH SG - CCM
@copy_ccm = @ccm;
@copy_softguard = @softguard;
&abgleich_id();
&abgleich_snr();
&abgleich_dns();
&abgleich_dns_ipname();
&abgleich_snr_cabletron();
&get_bool_auswahl();
for ($i=0; $i<26; $i++) { #Ueberschriftenzeile erzeugen
push @ueberschrift, $vorgabe_ueberschrift[$i] if ($boolean_auswahl[$i] eq "1");
}
&make_html();
&make_excel(\$datum, \$zeit);
exit(0);
}
Der Excel-Schnipsel:
####################################################################################################################################
# Funktion zum Erstellen der Excel Datei für die einzelnen Komponenten aus CCM
####################################################################################################################################
sub make_excel{
my ($tmp_datum, $tmp_zeit) = @_;
my $dateiname = 'auswahl_abgleich.xls'; #Variable fuer den Dateiname
my $workbook; #Arbeitsmappe in Excel
my $worksheet; #Arbeitsblatt in Excel
my $format_ueberschrift; #Format fuer Ueberschriften
my $format_std; #Format fuer Standardtabellenschrift
my $format_tab_kopf; #Format fuer Tabellenkopf
my $i; #Laufvariable fuer Schleife
my $zeile=4; #Aktuelle Zeile, in die geschrieben wird (4 als Start, da darüber der Kopf der Tabelle steht)
my $anzahl_spalten; #Anzahl der Spalten
my $spalte = 0;
chdir ("../zusatz/");
$workbook = Spreadsheet::WriteExcel->new($dateiname);
$worksheet = $workbook->add_worksheet(); #Worksheet hinzufuegen
&def_format_excel (\$workbook, \$format_ueberschrift, \$format_std, \$format_tab_kopf);
$worksheet->write(0, 0, "Erstellt am $$tmp_datum um $$tmp_zeit", $format_ueberschrift);
$worksheet->set_row(1, 30); #Höhe von 1. Zeile auf 30 setzen
$worksheet->write(1, 0, "Devices Auswahl Abgleich CCM - Softguard", $format_ueberschrift);
#Tabellenkopfzeile (Zeile: 3) schreiben
$worksheet->set_row(3, 25, $format_tab_kopf); #Fuer Zeile 3 Höhe 25 sowie Format setzen
$worksheet->write_row(3, 0, \@ueberschrift);
$anzahl_spalten = scalar@{$ergebnis[0]};
foreach (@ergebnis) {
for ($i=0; $i <26; $i++) {
if ($boolean_auswahl[$i] eq "1") {
$worksheet->write($zeile, $spalte, $_->[$i], $format_std);
$spalte++;
}
}
$zeile++;
}
}#Ende excel_abgleich