summaryrefslogtreecommitdiff
path: root/localshowlogentries
blob: 4b7986b3dba05fede2040360484346b08cfc4128 (plain)
  1. #!/bin/sh
  2. #
  3. # /usr/local/sbin/localshowlogentries
  4. # Copyright 2007-2008 Jonas Smedegaard <dr@jones.dk>
  5. #
  6. # $Id: localshowlogentries,v 1.1 2008-02-03 22:09:07 jonas Exp $
  7. #
  8. # List recent log entries matching certain criteria
  9. #
  10. set -e
  11. output="${output:-shortline}"
  12. logfilecount="${logfilecount:-1}"
  13. pattern="${pattern:-user_dovecot}"
  14. searchstring="$1"
  15. egrep_before="$2"
  16. egrep_after="$3"
  17. sed_shortline="${4:-$sed_longline}"
  18. sed_msgid="$5"
  19. sed_qid="$6"
  20. sed_username="$7"
  21. sed_longline="${8:-s/^\(.\{15\}\) [^:]*: /\1 /}"
  22. sed_time="${8:-s/^\(.\{15\}\) .*$/\1 /}"
  23. case $output in
  24. shortline)
  25. sedstring="$sed_shortline"
  26. ;;
  27. msgid)
  28. sedstring="$sed_msgid"
  29. ;;
  30. qid)
  31. sedstring="$sed_qid"
  32. ;;
  33. username)
  34. sedstring="$sed_username"
  35. ;;
  36. longline)
  37. sedstring="$sed_longline"
  38. ;;
  39. time)
  40. sedstring="$sed_time"
  41. ;;
  42. *)
  43. echo >&2 "ERROR: unknwon output \"$output\""
  44. exit 1
  45. ;;
  46. esac
  47. if [ -z "$sedstring" ]; then
  48. echo >&2 "ERROR: empty sed string for output \"$output\""
  49. exit 1
  50. fi
  51. find /var/log -name 'mail.log*' | sort -nr -t. -k3 | tail -n "$logfilecount" | xargs zcat -f \
  52. | egrep -- "$egrep_before$searchstring$egrep_after" \
  53. | sed "$sedstring"
  54. exit 0