![]() |
[php] Backupcontrole via php
Een van mijn dagtaken op mijn stagebedrijf is het controleren van backupstatus logboeken.
Elke statuslijst (.txt bestand) moet gecontroleert worden en samengevat worden in een controlelijst. Omdat dit veel tijd vergt, zou ik deze taak gaan willen automatiseren. Dit zou ik willen doen door middel van een linux-distro, apache met php en (eventueel) mysql. Het lukt al aardig, maar heb nog een paar problemen. Probleem 1: Als ik het volgende doe: PHP-code:
Probleem 2: Een uitkomst regel zal er zo uit komen te zien Code:
08-03-2006 19:03 628.623.360 Systemstate AD-OZ-01.bkf |
1.
exec('command > file.txt'); gebruik passthru 2. Reguliere expressies |
Waarom zou je dit met php doen en niet iets fatsoenlijks met een programmeertaal.
(of wellicht bash) |
Citaat:
Citaat:
Citaat:
Voorbeelden zijn altijd leuk :) |
Citaat:
|
|
Wat je ook kunt doen, maar iets minder safe is, is exploden op de spatie.
|
1) met fopen het bestand openen en regel voor regel inlezen
2) lijkt op fixed-width indeling daarnaast zou ik het in een simpele database zetten, zodat je wat ingewikkeldere statistieken kunt berekenen. |
Citaat:
En hier vind je een logje dat iedere werkdag gecontroleert moet worden. |
Citaat:
|
Het enige wat ik nodig heb is zijn de namen van de server, datum, tijd, bestandsgroote en bestandnaam.
Deze gegevens worden uitgefilterd door grep. |
Waarom sla je deze data, het is immers data, niet op in een database? Zo kun je later nog altijd bepalen in welke vorm het moet worden weergegeven.
Wat betreft het exploden op spatie, dat is natuurlijk niet aan te raden. Je gaat dan uit van een bepaalde grammatica, die op een gegeven moment misschien wel klopt, maar 2 momenten later misschien niet, i.e. bij het toevoegen van een extra parameter ERGENS. Dit zou resulteren in dat de daarop volgende indexes allemaal met 1 worden opgehoogd, leuk voor de zondagmiddag :P Reguliere expressie is the way to go, of een simpele LL-parser als eerstgenoemde te hoog gegrepen is. |
Zoals ik dus zei, een database wil ik liever later.
Ik wil het zo hebben dat deze .txt bestandjes van alle onnodige dingen gefiltert word (via grep), de tekst wat over blijft netjes in een htmltabel komt te staan. Kunnen jullie me echt geen voorbeeldscriptjes laten zien, hoe ik dit probleem kan oplossen? |
*untested*
Code:
<?PHP zoiets? |
Hehe, volgens mij maar één foutje (". $matches[0] .") ;)
|
Citaat:
Overigens, de reguliere epxressie checkt niks, wellicht is zoiets beter (ook deze, untested): Code:
"^(\d{2}-\d{2}-\d{4}) (\d{2}:\d{2}) (\d{3}.\d{3}.\d{3}) (\w) ([A-Z]{2}-[A-Z]{2}-\d{2}.bkf)$" |
Ff een up van mijn topic, om jullie de status van mijn project te melden:
Het lukte me niet om met passthru iets te regelen, dus zocht ik ff verder. Op google kwam ik het volgende stukje code tegen: PHP-code:
Helaas kreeg ik niet de kans om een apparte linuxservertje op te zetten, dus ging ik wat prutsen met gepoorte linuxcommando's van cygwin. PHP-code:
PHP-code:
|
Nee, het laatste stukje met een variabele datum werkt niet.
Want toen hem teste ontdekte ik dat een stukje wat wel werkte, niet achter een commentaar tekentje zat. Deze werd dus uitgevoerd in plaats van mijn nieuwe code. Ik zou graag met grep aangegeven zoekwoorden en een datum als variabele, in een tekstdocumentje zoeken en de gevonden dingen in een cel gooien. Het volgende stukje werkt, maar ik krijg die variabele er niet in: PHP-code:
|
[0-9]{2}-[0-9]{2}-[0-9]{4} ?
doe anders 'ns "man grep" en leer reg-expressies :) |
Citaat:
Maar dat heb ik al weer opgelost :) : PHP-code:
Citaat:
|
toch jammer dat je zn quote aanpast :(
|
ff een up van mijn topic om de status te melden:
Het is me uiteindelijk gelukt om meerdere variabelen als zoekwoord voor grep te voegen, door de script automatisch laten aan te passen door sed via een andere script. Alles gaat voorspoedig, maar hik steeds tegen het volgende probleem: Zoals jullie weten maak ik van de volgende code gebruik om grep aan te roepen, grep te laten zoeken en het resultaat weer te geven. PHP-code:
herhaalt hij steeds het zoekresultaat van de eerste zoekopdracht. Hoe kan ik ervoor zorgen dat hij normaal de tweede opdracht pakt en deze goed weergeeft zonder de eerste resultaat mee te pakken? |
Heb nog ff wat rondgevraagd op got.
Ze vertelden me dat ik "unset" erbij moest gebruiken. De uiteindelijke code moet dus het volgende zijn: PHP-code:
|
Waarom gebruik je exec en an grep, waarom niet meteen preg_match, dit kan hetzelfde (naar mijn weten), is sneller, en vormt een kleiner veiligheids risico.
|
Alle tijden zijn GMT +1. Het is nu 13:30. |
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.