Freesco, NND, CDN, EOS
http://forum.freesco.pl/

Logowanie połączeń - > usuwanie najstarszego pliku.
http://forum.freesco.pl/viewtopic.php?f=35&t=11098
Strona 1 z 1

Autor:  Anonymous [ niedziela, 5 lutego 2006, 13:26 ]
Tytuł:  Logowanie połączeń - > usuwanie najstarszego pliku.

Witam.

Używam tego skryptu do logowania połączeń
: [/] [] ()
#!/bin/bash

killall tcpdump

mv /tmp/logi.dmp /tmp/roboczy.dmp

##########################################################

tcpdump -i eth1 tcp [13] == 2 -w /tmp/logi.dmp &

##########################################################

tar cvfz /var/www/logi/`date +%Y-%m-%d--%H-%M-%S`.tar.gz /tmp/roboczy.dmp

rm /tmp/roboczy.dmp



Wszystko było by ok, gdyby nie to że co jakiś czas muszę ręcznie usuwać stare logi. Pomyślałem żeby to jakoś zautomatyzować.

Za pomocą komendy
: [/] [] ()
df | grep "hda1" | gawk '{print $4}'

odczytuje wolne miejsce na dysku w kB, i jeśli ta wartość spadnie poniżej pewnego progu usuwany ma być najstarszy plik z /var/www/logi/

Jak jednak odnaleźć najstarszy plik ?
Próbuję użyć komendy
: [/] [] ()
ls -t

jednakże ls w wersji na freesco nie posiada tego parametru...

Czy istnieje możliwość zaktualizowania komendy ls ? Czy może istnieje jakieś alternatywne rozwiązanie do usuwania starych logów.

Autor:  Maciek [ niedziela, 5 lutego 2006, 14:41 ]
Tytuł: 

W moim Freesco zmieniałem standardowy logrotate w związku ze stosowaniem niegdyś mksa, przy tej okazji przenosiłem standardowe logi na dysk i co jakiś czas duży plik z logami kasuję ręcznie. Można to zrobić jednak troszkę inaczej. Zapisaju logi bez daty w nazwie i co jakiś czas wprować rotację, zmiana plik.log na plik.log1 a wczesniej plik log1 na plik.logold, a na końcu kasowanie pliku plik.logold. Oczwywiście tych plikówmożesz mieć więcej tak, żeby mieć zawsze zachowane logi z jakiegoś okresu czasu.

Autor:  Anonymous [ niedziela, 5 lutego 2006, 23:08 ]
Tytuł: 

Znalazłem to czego szukałem.
Mógłby to ktoś skompilować pod freesco 0.2.7 ?

http://stderr.be/ftp/unix/scripts/oldest.c

Autor:  Anonymous [ poniedziałek, 6 lutego 2006, 17:21 ]
Tytuł: 

Ok, już wszystko mam.
Końcowy kod, może się niektórym przyda:

: [/] [] ()
#!/bin/bash

######################################################################
#
#Skrypt wspomagajacy tworzenie logow polaczen z wykorzystaniem tcpdump dla Freesco 0.2.7
#
#Wymaga programu gawk znajdujacego sie w pakiecie bash oraz programu tar znajdujacego sie w pakiecie utils
#Zalecane uruchamianie co 24h przy uzyciu CRONA, najlepiej w poznych godz. nocnych przy których wystepuje najmniejsze obiazenie serwera ze wzgledu na uzycie programu tar
#Logi wygenerowane przez skrypt nalezy czytac np. programem etheral
#
#podziekowania dla:
#--MW-- z forum freesco.pl za napisanie podstawowego kodu ktory rozbudowalem :]
#chodnik z forum ks.ekspert.pl
#bercik z kanalu #freesco (IRCnet)
#eMTi z kanalu #freesco (IRCnet)
#dust_puppy z kanalu #linux (POLnet)
#Goz z kanalu #linux (POLnet)
#acrow z kanalu #linux (POLnet)
#i wszystkich ktorych pominolem, kolejnosc jest przypadkowa.
#
#by gumis_pl (krzysiekadmi@o2.pl)
#
######################################################################

interfejs="eth0"                              #interfejs na którym bedziemy nasluchiwac
prog="204800"                                  #jesli ilosc wolnego miejsca spadnie ponizej tej wartosci to usuwane sa najstarsze logi z archiwum
logi="/mnt/router/logs"                   #sciezka folderu z obecnymi logami (musi istniec)
archiwum="/mnt/router/logs/archive" #sciezka folderu z archiwum logow (musi istniec)

######################################################################

wolne_miejsce=$(df | grep "hda1" | gawk '{print($4)}')

if [ $wolne_miejsce -lt $prog ];
then
      echo "Wolne miejsce spadlo ponizej $prog kB."   
      z="1"
         for plik in $archiwum/*
         do
         if [ $z = "1" ];
            then
            plik2=$plik
            z="0"
         fi
         if [ $plik -ot $plik2 ];
            then
             plik2=$plik
         fi
         done
      echo "Usuwanie starych logow..."   
      rm $plik2         
fi

######################################################################

echo "Wylaczanie tcpdump..."

tcpdump=$(ps | gawk '{print($4)}' | grep "tcpdump" | head -n 1)
if [ "$tcpdump" = "tcpdump" ];
   then
      killall tcpdump
   else
      echo "Nie mozna zakonczyc tcpdump."
fi

######################################################################

cd /
cd $logi

temp=$(ls -1F | grep "temp.dmp")
current=$(ls -1F | grep "current.dmp")

if [ "$temp" = "temp.dmp" ];
   then
      echo "Usuwanie pliku temp.dmp..."
      rm temp.dmp
fi
if [ "$current" = "current.dmp" ];
   then
      echo "Przenoszenie pliku current.dmp do pliku temp.dmp..."
      mv $logi/current.dmp $logi/temp.dmp
fi

######################################################################

echo "Wlaczanie tcpdump..."
tcpdump -i $interfejs tcp [13] == 2 -w $logi/current.dmp &

######################################################################

echo "Pakowanie pliku temp.dmp..."
temp=$(ls -1F | grep "temp.dmp")
if [ "$temp" = "temp.dmp" ];
   then
      tar=$(tar cvfz $archiwum/`date +%Y-%m-%d--%H-%M-%S`.tar.gz temp.dmp)
      if [ "$tar" = "temp.dmp" ];
         then
            echo "Pakowanie zakonczone sukcesem !"
      fi
   else
      echo "Blad pakowania ! Nie mozna odnalezc pliku temp.dmp"
fi

Strona 1 z 1 Strefa czasowa UTC+2godz.
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/