Uitvoer van tail -f gebruiken binnen script*

Pagina: 1
Acties:
  • 115 views sinds 30-01-2008
  • Reageer

  • TripleQ
  • Registratie: Juni 2004
  • Niet online
Dag,
Ik heb al een aardig tijdje lopen zoeken op internet en tweakers naar het volgende,

Ik doe nu
code:
1
tail -f -n 500 /usr/local/apache2/logs/access_log


Dan komt er elke keer als er iemand op mijn apache server komt er een aantal regels bij.
Nu zou ik graag elke keer als er een regel bijkomt. Dat deze regel wordt doorgestuurd naar een aparte applicatie.

Een regel die er bijvoorbeeld bij kan komen is iets als
code:
1
192.168.1.9 - - [20/Nov/2005:13:12:25 +0100] "GET /plaatje.jpg HTTP/1.1" 200 2008708


Mijn applicatie heet
logapplicatie

en start je dan op de volgende manier op
code:
1
./logapplicatie 192.168.1.9 - - [20/Nov/2005:13:12:25 +0100] "GET /plaatje.jpg HTTP/1.1" 200 2008708


In die applicatie wordt die ene regel verder verwerkt. Maar dat is bijzaak nu.
Dus de vraag eigenlijk.

Kan ik die ene regel die erbij komt. zo doorlaten sturen via tail-f naar mijn eigen applicatie?

Ik had al wat gekloot met grep. maar dat werkt ook niet echt.

Alvast hartelijk bedankt!

[edit]
Misschien ongelukkige topic titel..vergeten af te maken..kan zelf niet wijzigen zie ik hier.

[ Voor 6% gewijzigd door TripleQ op 20-11-2005 13:33 ]


  • Palomar
  • Registratie: Februari 2000
  • Niet online
./logapplicatie `tail -f -n 500 /usr/local/apache2/logs/access_log1` misschien? (let op de `)

al weet ik niet precies wat jouw applicatie doet, dus misschien zit ik er wel helemaal naast...

[ Voor 35% gewijzigd door Palomar op 20-11-2005 13:34 ]


  • Osiris
  • Registratie: Januari 2000
  • Niet online
`tail -f -n 500 /usr/local/apache2/logs/access_log > /path/naar/logapplicatie`

Zoiets? Dan moet je log-applicatie dus wel steeds stdin monitoren ofzo, geen idee hoe je applicatie dr van binnen uit ziet.

  • [BoSS]
  • Registratie: Maart 2000
  • Laatst online: 16:29

[BoSS]

Geen woorden maar daden!

Misschien is het een idee om dit niet op deze manier met tail te doen, maar gewoon de logfile uit te lezen met 'jouw programma' (al kan je hier wel wat meer informatie over geven..werking, etc).

20x 170 Wp (Solar Frontier) op ZZO / 54 graden


  • rvm
  • Registratie: November 2000
  • Niet online

rvm

tail -f /usr/local/apache2/logs/access_log | /path/to/logapplicatie

logapplicatie leest invoer van STDIN
Let wel op dat als je de acces_log roteert, dat je 'tail' moet herstarten in dit geval, omdat 'tail' de filedescriptor volgt en niet de bestandsnaam.

  • froggie
  • Registratie: November 2001
  • Laatst online: 20-11-2024

froggie

Kwaaak

Wat doe jou app? Ik krijg het idee dat je awstat achtige dingen wil doen met je logfiles. Waarschijnlijk zijn hier al hele nette kant en klaar oplossingen voor.

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Osiris schreef op zondag 20 november 2005 @ 13:35:
`tail -f -n 500 /usr/local/apache2/logs/access_log > /path/naar/logapplicatie`

Zoiets? Dan moet je log-applicatie dus wel steeds stdin monitoren ofzo, geen idee hoe je applicatie dr van binnen uit ziet.
Je hebt net je binary overschreven met de output van tail.


TS: wat probeer je precies te doen? Want ik heb 't idee dat je niet de meest elegante manier bedacht hebt.

All my posts are provided as-is. They come with NO WARRANTY at all.


  • zomertje
  • Registratie: Januari 2000
  • Laatst online: 23:25

zomertje

Barisax knorretje

Ik pas je titel even aan :)

En leg even uit wat je applicatie doet of wat je wil bereiken. Misschien is er een andere/eenvoudigere manier.

het ultieme jaargetijde.... | #!/usr/bin/girl | Art prints and fun


  • TripleQ
  • Registratie: Juni 2004
  • Niet online
Zo
bedankt voor alle reacties mensen,

Maar ik zie helaas geen werkend iets :(

Mijn eigen programmatje doet opzich nog niet veel nu.
Hij toont alleen de regel die die als input heeft

simpel c++
code:
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
  for (int i = 1; i < argc; i++)
  {
    cout << argv[i] << " ";
  }
   cout << endl;
 return 0;


Maar ik heb ook al wat code liggen die een msnberichtje kan doorsturen als er actie is op mijn webserver. Gewoon leuk om mee te spelen dus:)

Verder heb ik er ook wel eens aan gedacht om "tail" na te maken.
Misschien idd handiger om mijn programma zelf het bestand in te gaten te laten houden..
Daar maar eens op zoek naar gaan. Hoe dat moet.

  • Osiris
  • Registratie: Januari 2000
  • Niet online
CyBeR schreef op zondag 20 november 2005 @ 13:59:
[...]

Je hebt net je binary overschreven met de output van tail.
:D :X :X :X

Ik bedoelde "|" (pipe) uiteraard :X

  • TripleQ
  • Registratie: Juni 2004
  • Niet online
Osiris schreef op zondag 20 november 2005 @ 14:40:
[...]

:D :X :X :X

Ik bedoelde "|" (pipe) uiteraard :X
Hahah :)
Ik dacht ook al...hier gaat iets niet goed. Dit bleek vooral doordat de inhoud van de binary ineens me log file was:P

  • TripleQ
  • Registratie: Juni 2004
  • Niet online
Misschien dit de oplossing?

Misschien ook wel niet de mooiste..
maar het lijkt te werken..


code:
1
2
3
4
tail -f -n 1 /usr/local/apache2/logs/access_log |
while read line ;
do ./logapplicatie $line;
 done


Dit kan ik gewoon in een scriptfile neerzetten...en die roept dus gewoon weer mijn programmaatje aan:)

[ Voor 24% gewijzigd door TripleQ op 20-11-2005 14:53 ]


  • TripleQ
  • Registratie: Juni 2004
  • Niet online
Hmm

Misschien toch niet mooi idd

WANT,
nu moet de msn applicatie steeds opnieuw opgestart worden. (aanmelden op msn etc)
En dat duurt telkens een hele tijd.

Het mooiste zou het volgende zijn.

-logapplicatie start op
-meld zich aan bij msn
-wacht op input vanuit een eigen gemaakte 'tail'
-filtert er nog dingen uit
-verstuurd die input
-wacht weer op nieuwe input
etc..

Nu zijn de meeste dingen niet moeilijk...behalve dat 'tail' gedeelte :)

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05-2025
Kun je geen fifo maken van je log file? Dan kun je je programma gewoon de logfile laten lezen en ben je klaar. Nadeel van deze optie is dat je geen gewone logfile meer hebt. Dat kun je ondervangen door je programma zo te maken dat hij zijn input uitspuugt naar een andere file.

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

TripleQ schreef op zondag 20 november 2005 @ 15:13:

Nu zijn de meeste dingen niet moeilijk...behalve dat 'tail' gedeelte :)
Hoezo?

Je weet niet hoe 't moet?

Dan download je de source van tail en kijk je de kunst af :)

All my posts are provided as-is. They come with NO WARRANTY at all.


Verwijderd

logapplicat < "tail -f /var/log/bla"

of tail -f /var/log/bla | xargs logapplicatie

  • Parasietje
  • Registratie: Juli 2004
  • Laatst online: 10-06-2024

Parasietje

linux-geek

Ik zou het 'tail'-gebeuren ook in je applicatie opnemen.
Maw bekijk ff de source code van tail en doe een copy-paste (en breng je applicatie uit onder GPL :P)

WebDAV in Vista is horribly broken. Ik wil het fixen, maar ben nog steeds op zoek naar de tarball met de source...


  • Nitroglycerine
  • Registratie: Januari 2002
  • Laatst online: 21:26

Nitroglycerine

Autisme: belemmering en kracht

Waarom geen mail of snmp trap maar een msn berichtje? Spam blijft het toch :)

Hier kon uw advertentie staan


  • jvhaarst
  • Registratie: Maart 2000
  • Laatst online: 08-02 23:13

jvhaarst

Eendracht maakt macht

If you don’t have enough time, stop watching TV.

Pagina: 1