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 deletions(-)
 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
-- 
1.7.5.3


Reply via email to