|
| Script låser /var/log/messages Fra : Allan |
Dato : 07-04-04 07:13 |
|
Hej NG,
Jeg er stødt på et (for mig) mærkeligt problem.
Det jeg vil er at klippe alle linier fra /var/log/messages ud, som der har
med iptables at gøre (dem der indeholder "iptables-log").
Min iptables ser således ud:
iptables -A INPUT -i ppp0 -j LOG --log-prefix "iptables-log "
script start>>>
Mit script der er sat til at køre i Cron hver time ser således ud:
#!/bin/bash
# Find linier der indeholder iptables-log og kopier over i iptables-logfil
sed -n '/iptables-log/p' /var/log/messages >> /var/log/iptables
# Slet linier der indeholder iptables-log, og overskriv original
messages-fil
sed '/iptables-log/d' /var/log/messages > /tmp/messages-uden-iptables
mv -f /tmp/messages-uden-iptables /var/log/messages
# For at efterlade messages med samme rettigheder som før
chmod 600 /var/log/messages
<<< script slut
/var/log/messages ser således ud:
-rw------- 1 root root 174017 Apr 7 08:00 /var/log/messages
Alt virker fint første gang efter at PC'en har været genstartet.
Men efter at scriptet er blevet kaldt, så bliver der ikke længere skrevet
noget som helst i /var/log/messages. Det er ligesom om at
/var/log/messages bliver "låst", kan det være rigtigt?
Mvh. Allan
PS: Det skulle ikke undre mig om der er bedre måder at gøre dette på?
| |
( (07-04-2004)
| Kommentar Fra : ( |
Dato : 07-04-04 11:05 |
|
linux@smoFJERNSPAMelfen.dk (Allan) writes:
> Hej NG,
>
> Jeg er stødt på et (for mig) mærkeligt problem. Det jeg vil er at klippe alle
> linier fra /var/log/messages ud, som der har med iptables at gøre (dem der
> indeholder "iptables-log").
> # Slet linier der indeholder iptables-log, og overskriv original messages-fil
> sed '/iptables-log/d' /var/log/messages > /tmp/messages-uden-iptables
> mv -f /tmp/messages-uden-iptables /var/log/messages
Når du flytter en ny fil ind på pladsen skifter filen inodenummer, men
syslog har filen med det gamle nummer åben.
Så enten skal du genstarte syslog i dit script, eller også kan du prøve
om sed -i hjælper dig.
Logrotate genstarter services af netop den grund.
Mvh.
Dennis Jørgensen
| |
Allan (07-04-2004)
| Kommentar Fra : Allan |
Dato : 07-04-04 12:21 |
|
> Når du flytter en ny fil ind på pladsen skifter filen inodenummer, men
> syslog har filen med det gamle nummer åben.
>
> Så enten skal du genstarte syslog i dit script, eller også kan du prøve
> om sed -i hjælper dig.
sed -i hjælper desværre ikke (inode er det første til venstre):
[root@pc log]# ll -i test
230867 -rw-r--r-- 1 root root 12 Apr 7 12:42 test
[root@pc log]# sed -i '/s222/d' test
[root@pc log]# ll -i test
231929 -rw-r--r-- 1 root root 12 Apr 7 13:13 test
Er det ikke lidt resource-spild at genstarte syslog hver time, eller er
det bare mig?
Tak for hjælpen.
Mvh. Allan
| |
Thomas Rasmussen (07-04-2004)
| Kommentar Fra : Thomas Rasmussen |
Dato : 07-04-04 13:00 |
|
linux@smoFJERNSPAMelfen.dk (Allan) writes:
> Er det ikke lidt resource-spild at genstarte syslog hver time, eller
> er det bare mig?
Tjaa, det er det vel, ved dog ikke hvor meget det betyder i
praksis. Men kan du istedet ikke fortælle iptables at den skal kaste
sit output ud et andet sted? Eller kan man ikke sætte syslog op til at
alle logentries der matcher ^.*iptables-log.*$ ryger i en anden fil?
Det ville da være langt den bedste løsning. Det tager jo også lidt tid
at lave en sed på alle linierne i logfilen, specielt hvis den bliver
meget stor.
/Thomas
--
/"\ | Human Knowledge Belongs To The World
\ / | -- Milo Hoffman in "AntiTrust"
x |
/ \ <-- (ASCII Ribbon Campain against html emails and postings!)
| |
Allan (07-04-2004)
| Kommentar Fra : Allan |
Dato : 07-04-04 13:59 |
|
> Tjaa, det er det vel, ved dog ikke hvor meget det betyder i
> praksis. Men kan du istedet ikke fortælle iptables at den skal kaste
> sit output ud et andet sted? Eller kan man ikke sætte syslog op til at
> alle logentries der matcher ^.*iptables-log.*$ ryger i en anden fil?
Det var også sådan noget jeg ledte efter i starten, men kunne ikke rigtig
finde noget - derfor begyndte jeg at rode med "sed".
Er der nogle der ved om ovenstående kan lade sig gøre?
Mvh. Allan
| |
( (12-04-2004)
| Kommentar Fra : ( |
Dato : 12-04-04 02:01 |
|
linux@smoFJERNSPAMelfen.dk (Allan) writes:
> Er det ikke lidt resource-spild at genstarte syslog hver time, eller er det
> bare mig?
Jeg ville ikke bekymre mig, men du kan prøve sende SIGHUP til processen
i stedet, man-siden angiver at det udover en genindlæsning af
konfigurationen også lukker åbne filer. Forskellen i belastning er nok
til at overse.
Mvh.
Dennis Jørgensen
| |
Brian Møller (07-04-2004)
| Kommentar Fra : Brian Møller |
Dato : 07-04-04 14:08 |
|
Hej
Nu skriver du ikke lige hvad program du bruger til at logge til
/var/log/messages; men jeg vil gætte på at dit syslog-program skal
genstartes hver gang du kører dit script.
/Brian
| |
|
|