Avatar billede gregblach Nybegynder
22. oktober 2002 - 16:09 Der er 10 kommentarer og
1 løsning

Ny cfgmaker fil.

Da jeg ikke har erfaring i Perl og er under tidspres, tænkte jeg at jeg ville spørge en venlig og dygtig sjæl om hjælp. ;o)

Jeg har brug for et Perl program, som skal bruges i sammenhæng med MRTG. Grundessensen i programmet skal være, at det læser oplysninger fra en .txt fil (én linje ad gangen for hvert link), og derefter placerer oplysningerne i korrekt format i mrtg.cfg filen. Årsagen til dette er, at jeg med tiden skal overvåge flere hundrede forskellige links. Derfor virker det lettere for mig, at vedligeholde en "simpel" .txt fil, fremfor at scrolle rundt i en kæmpe config. Hvis der nu skulle forekomme ændringer i konfigurationen, er det noget nemmere at rette detaljer i Perl programmet til, fremfor at ændre i hele mrtg.cfg filen!
mrtg.cfg filen bliver sikkert rodet ad pommern til, men det er ligegyldigt sålænge man kan opdatere i den let læselige .txt fil.


.txt filen skal indeholde et par oplysninger for hvert link, og skal bygges op således at der kun bruges én linje til hver link. Den bliver MEGET simpel. Eksempel:

SDA01 4.0 125000
MJA03 14.2 19300
etc.

Oplysningerne skal så overføres via Perl programmet, der laver en ny mrtg.cfg fil der overskriver den gamle.


Jeg vil gerne have grundelementerne i mrtg.cfg filen til at se ud som nedenstående, men det er vel kun et spørgsmål om formattering:

-----------------------------------------------------------
LoadMIBs: d:\allot\xxx.txt,d:\allot\xxx1.txt,d:\allot\xxx2.txt,d:\allot\xxx3.txt

Options[_]: growright, bits, noinfo, noborder, nobanner, nolegend

RunAsDaemon: Yes

WorkDir: D:\Allot

###

Directory[sdc01]: sdc01

Target[sdc01]: public@xxx.xxx.xxx.xxx

Title[sdc01]: Traffic Analysis for sdc01

BodyTag[sdc01]: <BODY FONT="Arial" SIZE="LEFTMARGIN="5" TOPMARGIN="5" MARGINHEIGHT="5" MARGINWIDTH="5" BGCOLOR="#FFFFFF">

PageTop[sdc01]: <TABLE border="1" align="center" cellspacing="0" cellpadding="5" bgcolor="#ffffff">
            <TR><TD align="center" valign="middle" background="../IP_mrtg_logo.gif" bgcolor="#ffffff"></TD></TR>
            <TR><TD> <H3>Traffic Analysis sdc01</H3></TD></TR>
          </TABLE>

MaxBytes[sdc01]: 1250000

WithPeak[sdc01]: d,w

Suppress[sdc01]: y,m

PageFoot[AFO01]: Contact <A HREF="mailto:xx@xx.net";>xx@xx.net</A>\n
if you have questions about this page.
-----------------------------------------------------------

Hvis du kan hjælpe mig med et udkast til et program, eller selv har lavet noget lignende tidligere som jeg må få, er der 200 point på højkant! ;o)

Mvh Greg
Avatar billede jespernaur Nybegynder
22. oktober 2002 - 18:13 #1
Her er et program, det skal gemmes som genmrtg.pl
---------
use strict;

my @skabelon;
my @kolonner;

# Åbn output fil
open(OUT, ">mrtg.cfg") or die "Kan ikke skabe mrtg.cfg";

# Kopier start af fil
open(INP, "mrtgtop.txt") or die "Kan ikke åbne mrtgtop.txt";
while (<INP>) {
  print OUT;
}
close(INP);

# Indlæs skabelon for 1 link
open (INP, "enlink.txt") or die "Kan ikke åbne enlink.txt";
@skabelon = <INP>;
close(INP);

# Indlæs hver enkelt link og udskriv under anvendelse af
# skabelon
open (INP, "linktab.txt") or die "Kan ikke åbne linktab.txt";
while (<INP>) {
  chomp;
  @kolonner = split;
  eval("print OUT <<BLOCK \n@skabelon\nBLOCK\n\n");
}
close(INP);


# Kopier slutning af fil
open(INP, "mrtgbund.txt") or die "Kan ikke åbne mrtgbund.txt";
while (<INP>) {
  print OUT;
}
close(INP);

close(OUT);
---------

Du skal have filen mrtgtop.txt, denne kopieres uændret til starten af mrtg.cfg:
---------
LoadMIBs: d:\allot\xxx.txt,d:\allot\xxx1.txt,d:\allot\xxx2.txt,d:\allot\xxx3.txt

Options[_]: growright, bits, noinfo, noborder, nobanner, nolegend

RunAsDaemon: Yes

WorkDir: D:\Allot
---------


Du skal have filen mrtgbund.txt, denne kopieres uændret til slutningen af mrtg.cfg:
---------
PageFoot[AFO01]: Contact <A HREF="mailto:xx@xx.net";>xx@xx.net</A>\n
if you have questions about this page.
---------


Du skal have filen enlink.txt, denne benyttes som skabelon for hver link:
---------
Directory[$kolonner[0]]: $kolonner[0]

Target[$kolonner[0]]: public\@xxx.xxx.xxx.xxx

Title[$kolonner[0]]: Traffic Analysis for $kolonner[0]

BodyTag[$kolonner[0]]: <BODY FONT="Arial" SIZE="LEFTMARGIN="5" TOPMARGIN="5" MARGINHEIGHT="5" MARGINWIDTH="5" BGCOLOR="#FFFFFF">

PageTop[$kolonner[0]]: <TABLE border="1" align="center" cellspacing="0" cellpadding="5" bgcolor="#ffffff">
            <TR><TD align="center" valign="middle" background="../IP_mrtg_logo.gif" bgcolor="#ffffff"></TD></TR>
            <TR><TD> <H3>Traffic Analysis $kolonner[0]</H3></TD></TR>
          </TABLE>

MaxBytes[$kolonner[0]]: $kolonner[2]

WithPeak[$kolonner[0]]: d,w

Suppress[$kolonner[0]]: y,m

---------


Du skal have filen linktab.txt, som indeholder 1 linie for hver af dine links:
---------
SDA01 4.0 125000
MJA03 14.2 19300
---------

Det fungerer således, at filen enlink.txt er en skabelon for hver link. Indholdet fra linktab.txt bliver fordelt ud således at første kolonne bliver anbragt alle steder, der
står '$kolonne[0]', anden kolonne der hvor der står '$kolonne[1]', tredie kolonne der hvor der står '$kolonne[2]' etc.

Perl programmet kender absolut intet til formatet af det ønskede output, det kan du indrette fuldstændig som du ønsker ved at ændre i de 3 filer mrtgtop.txt, mrtgbund.txt og enlink.txt

Mvh
Jesper Naur
Avatar billede gregblach Nybegynder
23. oktober 2002 - 09:11 #2
Hej Jesper,

Tak for det kompentente svar! Det ser ud til, at du har lavet noget tilsvarende før? Har du kørt programmet? Virker det? ;o)

Jeg håber ikke du har noget imod at jeg lige venter et par dage, og ser om der kommer andre gode indlæg inden du får pointene...

Mvh Greg
Avatar billede jespernaur Nybegynder
23. oktober 2002 - 11:23 #3
Ja, jeg har kørt programmet (jeg tester da mine ting, før jeg afleverer dem(!)), og det virker efter min bedste overbevisning som beskrevet.
Avatar billede gregblach Nybegynder
23. oktober 2002 - 13:20 #4
Hej Jesper,

Jeg har nu testet scriptet, og jeg må sige at du har foræret mig løsningen på et sølvfad! :o)

Jeg kunne ikke have ønsket mig en bedre skabelon at arbejde ud fra! Det er SUPER!!

Så her har du 200 meget velfortjente point.

1000 tak for hjælpen.

Mvh

Greg
Avatar billede gregblach Nybegynder
23. oktober 2002 - 17:50 #5
Jesper,

Har du en ide om hvorfor jeg får fejlmeddelelsen "WARNING: "Title[sdc01]" Not specified", når jeg afvikler dit ellers udemærkede script? Konflikter den med en gammel .cfg fil? Jeg har ellers fjernet mapper m.m. fra gammel konfiguration.
Fejlen resulterer desværre i, at jeg ikke har kunnet køre den ny mrtg.cfg fil endnu. :o(

Og en anden ting. Når mrtg.cfg er oprettet, ser den ud som følger:

--Directory[sdc01]: sdc01

Target[sdc01]: pipeByteCountIn.16.0&pipeByteCountOut.16.0:public@8xx.xx.128.12:::::2

Title[sdc01]: Traffic Analysis for sdc01

BodyTag[sdc01]: <BODY FONT="Arial" SIZE="LEFTMARGIN="5" TOPMARGIN="5" MARGINHEIGHT="5" MARGINWIDTH="5" BGCOLOR="#FFFFFF">

PageTop[sdc01]: <TABLE border="0" align="center" width="100%" cellspacing="0" cellpadding="5" bgcolor="#FFFFCC">
                  <TR><TD align="left"><img src="../sdc01_MRTG.jpg"></TD><TD align="right" valign="top"><a href="http://www.mrtg.org" border="0"><img src="../mrtg-l.gif" border="0"><img src="../mrtg-m.gif" border="0"></a></TD></TR>
                <TR><TD align="center"> <B> Traffic Analysis sdc01</B></TD></TR>
                    </TABLE>

MaxBytes[sdc01]: 125000

WithPeak[sdc01]: d,w
--

Som du kan se er der et enkelt indryk på hver linje, pånær den øverste. Dette optræder ved alle Links. Jeg kan ikke se hvorfor dette sker. Har det nogen betydning for afviklingen af programmet? Systemet kører forresten på en Windåse 2000 server...

Mvh

Greg
Avatar billede gregblach Nybegynder
23. oktober 2002 - 17:52 #6
Ok! Du kan så ikke se indrykkende her, men de ER der altså! :o)

Greg
Avatar billede gregblach Nybegynder
23. oktober 2002 - 17:53 #7
...og en tastefejl! Såda ser det ud:

--

Directory[sdc01]: sdc01

Target[sdc01]: pipeByteCountIn.16.0&pipeByteCountOut.16.0:public@8xx.xx.128.12:::::2

Title[sdc01]: Traffic Analysis for sdc01
Avatar billede gregblach Nybegynder
23. oktober 2002 - 18:25 #8
Jeg kunne lige tilføje at jeg kører programmet med kommandoen:

C:\mrtg-2.9.25\bin>perl mrtg mrtg.cfg
WARNING: "Title[one01]" not specified

Jeg har både prøvet at fjerne Title linjen manuelt, og i program filerne, men lige lidt hjælper det? Den giver stadig samme fejl...
Avatar billede jespernaur Nybegynder
23. oktober 2002 - 19:12 #9
Hej Greg.

Jeg har fundet forklaringen på de 'underlige' indrykninger - dem kan du få væk ved at tilføje linien

$" = ''; # Undertrykker underlige blanktegn forrest i linier

umiddelbart inden gennemlæsningen af linktab.txt, altså så der kommer til at stå:

...
# Indlæs hver enkelt link og udskriv under anvendelse af
# skabelon
$" = ''; # Undertrykker underlige blanktegn forrest i linier
open (INP, "linktab.txt") or die "Kan ikke åbne linktab.txt";
while (<INP>) {
...

Jeg var ikke opmærksom på dem, da en tidligere anvendelse hvor jeg har brugt et tilsvarende princip, var fuldstændig ligeglad med dem! Med ovennævnte rettelse bliver du fri for dem, hvilket medfører, at alt data i mrtg.cfg på den ene eller anden måde stammer fra de 4 input-filer, og at perl-programmet ikke utilsigtet tilføjer noget.

Når det er sagt, må jeg indrømme, at jeg ikke engang ved hvad MRTG er! Derfor er det heller ikke nemt for mig at rådgive dig med hensyn til MRTG fejludskrifter. Jeg har kunnet betragte det hele som en øvelse i tekst-manipulation.

Du kommer nok til at undersøge og forstå, hvad der er galt med den genererede mrtg.cfg (eventuelt ved at eksperimentere med håndrettelser uden at køre genmrtg.pl). Når du så har fundet ud af hvad der evt. skal ændres, må du udføre tilsvarende rettelser i de 4 input-filer, for at få den genererede mrtg.cfg til at blive korrekt.

Mvh
Jesper Naur
Avatar billede jespernaur Nybegynder
23. oktober 2002 - 23:44 #10
Jeg har nu set, på

http://faq.mrtg.org/how.html

hvor det blandt andet er beskrevet at et foranstillet blanktegn er ødelæggende for funktionen af mrtg.cfg filer. Dette kunne let forklare nogle af dine problemer. Heldigvis har jeg ovenfor angivet en løsning.
Avatar billede gregblach Nybegynder
24. oktober 2002 - 08:31 #11
Hej Jesper,

Igen, 1000 tak for din hjælp. Det viste sig at være lige præcis deri problemet lå. Nu kører det som en drøm!

Du har virkeligt været mig til en stor hjælp. :o)

Mvh

Greg
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester