OVH Community, your new community space.

Backup logów połączeń


seal
29-04-2012, 08:44
Zapisz sobie na początku wartość zmiennej log_name do jakiegoś pliku który nie zostanie skasowany po restarcie i wtedy przy odpaleniu skryptu szukaj tego pliku jak go znajdziesz to catem wczytaj do zmiennej nowej i puść sobie pakowanie pliku w tle a potem podaj sobie nową zmienną i odpal tcpdumpa. Problem będzie jak w między czasie serwer się zrestartuje to wtedy plik się nie spakuje.

BTW czemu logowanie połączeń przez TCPDUMP a nie przez IPTABLES?

desavil
27-04-2012, 18:57
Jak by to było takie proste jak napisałeś to bym nie pisał tego postu

Pliki z danego dnia mają format:
tcpdump_D-M-Y_G-M-S.log
Czyli jeżeli w danym dniu niema żadnych restartów serwera jest tylko jeden plik z logami, jeżeli są to w zależności od ilości restartów tyle jest plików.

Teraz chodzi mi o to, aby podczas każdego uruchomieniu pliku ze skryptem była wykonywana archiwizacja tych plików (jeżeli są jakieś nie skompresowane) z dnia poprzedniego (ponieważ po killall tcpdump już wykonuje się logowanie na nowy dzień/wznowienie po restarcie serwera) oraz ew. nie skompresowanych plików wcześniej.

Podaję przykład:
Plik/i z logów z dnia 26.04.2012
tcpdump_26-04-2012_01-00-00.log
tcpdump_26-04-2012_06-10-00.log

Tworzy się z tego archiwum o nazwie: tcpdump_26-04-2012.tar.bz2 i zawiera te dwa pliki logów.
Jeżeli nie było żadnych restartów maszyny to jak wiadomo jest tylko jeden plik, który jest również kompresowany.

Oczywiście logi, które są tworzone obecnie na dany dzień nie są jeszcze kompresowane.

Widmo
27-04-2012, 18:04
tar -zcvf -9 $log_name.gz $log_name
rm $log_name

desavil
27-04-2012, 17:00
Witam,
Tworzę sobie logi połączeń za pomocą takiego skryptu:
Kod:
#!/bin/bash

killall tcpdump
log_dir='/home/logs'
log_name=tcpdump_`date '+%d'`-`date '+%m'`-`date '+%Y'`_`date '+%H'`-`date '+%M'`-`date '+%S'`
if [ ! -d $log_dir ]
then
mkdir $log_dir
fi
tcpdump -w $log_dir/$log_name.log -qn 'tcp[tcpflags] & (tcp-syn|tcp-fin|tcp-rst) != 0 or icmp[0] != 0' &
#tar -cjf TUTAJ PAKOWANIE
Skrypt jest uruchamiany w cron codziennie o północy oraz podczas każdego restartu/uruchomienia serwera.

Chciałbym w tym samym pliku najlepiej wykonać pakowanie do tar.bz2 pliku/plików z logami z całego dnia oraz aby nazwa archiwum była taka sama jak dzień, którego dotyczą logi.

Czyli np.
- O północy/przy restarcie serwer uruchamiany jest plik
- Tworzy się plik z logami
- Wykonuje się pakowanie logów jeżeli zaczął logować się już następny dzień
- Plik tekstowy z logami zostaje usunięty.