karflax
authorChris Koeritz <fred@gruntose.com>
Tue, 12 Mar 2013 23:35:35 +0000 (19:35 -0400)
committerChris Koeritz <fred@gruntose.com>
Tue, 12 Mar 2013 23:35:35 +0000 (19:35 -0400)
scripts/system/dump_logs.sh [new file with mode: 0644]

diff --git a/scripts/system/dump_logs.sh b/scripts/system/dump_logs.sh
new file mode 100644 (file)
index 0000000..0311de8
--- /dev/null
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+# dumps out the log files according to the provided pattern, but makes sure that
+# each one is dumped in chronological order, and any compressed logs are unpacked
+# first.
+
+function assemble_log_file()
+{
+  logpath="$1"; shift
+
+  # build an array of all the file names, in reverse order since we want the oldest
+  # files listed first.
+  full_set=($(ls -1 -r "$logpath"*))
+  if [ ${#full_set[*]} -lt 1 ]; then
+    echo "No log files were found matching the pattern '$full_set'"
+    exit 1
+  fi
+
+  logdump="$(mktemp /tmp/$USER_logdump.XXXXXX)"
+
+  for logy in ${full_set[*]}; do
+#echo logy is $logy
+    if [[ $logy =~ .*\.gz ]]; then
+      gzip -d -c "$logy" >>"$logdump"
+    else
+      cat "$logy" >>"$logdump"
+    fi
+  done
+
+  cat "$logdump"
+  \rm -f "$logdump"
+}
+
+
+##############
+
+logpath="$1"; shift
+
+if [ -z "$logpath" ]; then
+  echo "$(basename $0 .sh): Log file dumper"
+  echo
+  echo "This script requires a log path, which should be the prefix of some log files"
+  echo "that it will dump out.  All files matching the prefix are printed to standard"
+  echo "output, and the log entries will be printed in chronological order.  Any"
+  echo "compressed log files will be unpacked first before printing."
+  echo
+  echo "Example:"
+  echo -e "\t$(basename $0 .sh) /var/log/syslog"
+  echo
+  exit 1
+fi
+
+assemble_log_file "$logpath"
+
+