From 5d62ed0904204b9064699475cd55f6832d46ad67 Mon Sep 17 00:00:00 2001 From: Daniel Willmann Date: Tue, 19 Jul 2011 11:58:15 +0200 Subject: contrib: Add a script to clean up in regular intervals This script should be run from cron. It compresses and deletes older files. --- Makefile.am | 2 +- configure.ac | 1 + contrib/Makefile.am | 1 + contrib/osmo_pcap_clean_old | 47 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 contrib/Makefile.am create mode 100755 contrib/osmo_pcap_clean_old diff --git a/Makefile.am b/Makefile.am index b9a4331..7c9c65b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,6 @@ AUTOMAKE_OPTIONS = foreign dist-bzip2 1.6 -SUBDIRS = include src +SUBDIRS = include src contrib BUILT_SOURCES = $(top_srcdir)/.version EXTRA_DIST = git-version-gen diff --git a/configure.ac b/configure.ac index 9977ef6..2f4de9d 100644 --- a/configure.ac +++ b/configure.ac @@ -57,4 +57,5 @@ AC_OUTPUT( include/Makefile include/osmo-pcap/Makefile src/Makefile + contrib/Makefile Makefile) diff --git a/contrib/Makefile.am b/contrib/Makefile.am new file mode 100644 index 0000000..32bb8c2 --- /dev/null +++ b/contrib/Makefile.am @@ -0,0 +1 @@ +dist_pkgdata_DATA = osmo_pcap_clean_old diff --git a/contrib/osmo_pcap_clean_old b/contrib/osmo_pcap_clean_old new file mode 100755 index 0000000..d24a94b --- /dev/null +++ b/contrib/osmo_pcap_clean_old @@ -0,0 +1,47 @@ +#! /bin/sh + +# Script designed to clean up (zip/delete) old files +# Adjust the variables below and then copy/symlink this script +# to /etc/cron/cron.{hourly,daily} + +# We want to keep the filenames dated and that confuses logrotate, +# hence this script. + +# Number of pcap files per client +NUMFILES=8 +ZIPAFTER=3 +VERBOSE=0 + +# Path where the logfiles reside in +BASEPATH="/var/lib/osmo-pcap/" + +# Find the client names present in basepath +# Check how many files there are for each client +# Delete files in excess of NUMFILES + +cd "$BASEPATH" + + +do_cleanup() +{ + i=1 + find . -name "trace-$1*" |sort | while read LOG; do + if [ $i -gt $NUMFILES ]; then + [ $VERBOSE -eq 1 ] && echo "Deleting file \"$LOG\"" + rm -f "$LOG" + elif [ $i -gt $ZIPAFTER ]; then + if [ "${LOG##*.}" != "gz" ]; then + [ $VERBOSE -eq 1 ] && echo "Compressing file \"$LOG\"" + gzip "$LOG" + fi + else + [ $VERBOSE -eq 1 ] && echo "Noop for file \"$LOG\"" + fi + i=$(($i+1)) + done +} + +find . -name "trace-*" |sed -e "s/.*trace-\([^-]\+\).*/\1/" |sort |uniq | while read CLIENT; do + [ $VERBOSE -eq 1 ] && echo "Cleaning logs for $CLIENT" + do_cleanup "$CLIENT" +done -- cgit v1.2.3