summaryrefslogtreecommitdiff
path: root/showlog
blob: f23ca995de3ffbb1ac0b4ff442a6582bd8aeb0ac (plain)
  1. #!/bin/sh
  2. #
  3. # /usr/local/sbin/showlog
  4. # Copyright 2002-2006 Jonas Smedegaard <dr@jones.dk>
  5. #
  6. # $Id: showlog,v 1.12 2007-10-23 21:14:51 jonas Exp $
  7. #
  8. # Show topic-specific log entries
  9. #
  10. set -e
  11. logfilecount="${logfilecount:-1}"
  12. usage() {
  13. echo "Usage: $(basename $0) ftp|web|weberror|websuexec|mail|sms|smsbox|bearerbox|system [<keyword> [<keyword>...]]"
  14. exit 1
  15. }
  16. exit1() {
  17. echo "Error: $1"
  18. echo "Exiting..."
  19. exit 1
  20. }
  21. cat_logs() {
  22. rootdir="$1"
  23. pattern="$2"
  24. howmany="${3:-2}"
  25. if [ "$howmany" != "all" ]; then
  26. files="$(find $rootdir -mindepth 1 -maxdepth 1 -regextype posix-egrep -regex "$pattern" -type f -follow | sort -nr | tail -n "$howmany")"
  27. else
  28. files="$(find $rootdir -mindepth 1 -maxdepth 1 -regextype posix-egrep -regex "$pattern" -type f -follow | sort -nr)"
  29. fi
  30. for file in $files; do
  31. case $file in
  32. *.gz)
  33. zcat $file;;
  34. *.bz2)
  35. bzcat $file;;
  36. *)
  37. cat $file;;
  38. esac
  39. done
  40. }
  41. tail_history="${tail_history:-500}"
  42. target=$1
  43. shift || exit1 "Missing argument"
  44. case "$target" in
  45. ftp)
  46. log="xferlog"
  47. ;;
  48. web)
  49. logroot="/var/log/apache"
  50. log="access.log"
  51. ;;
  52. weberror|weberrors)
  53. logroot="/var/log/apache"
  54. log="error.log"
  55. ;;
  56. websuexec)
  57. logroot="/var/log/apache"
  58. log="suexec.log"
  59. ;;
  60. mail)
  61. log="mail.log"
  62. ;;
  63. sms|smsbox)
  64. log="smsbox.log"
  65. ;;
  66. bearerbox)
  67. log="bearerbox.log"
  68. ;;
  69. system)
  70. log="syslog"
  71. ;;
  72. *)
  73. usage
  74. ;;
  75. esac
  76. case "$target" in
  77. ftp|mail|system)
  78. logroot="/var/log"
  79. ;;
  80. web|weberror|weberrors|websuexec)
  81. logroot="/var/log/apache"
  82. ;;
  83. sms|smsbox|bearerbox)
  84. logroot="/var/log/kannel"
  85. ;;
  86. *)
  87. usage
  88. exit1 "Undefined logroot for \"$target\""
  89. ;;
  90. esac
  91. case "$target" in
  92. ftp|web|weberror|weberrors|websuexec|mail|sms|smsbox|bearerbox|system)
  93. logpattern="$(printf '.*/%s(\.[[:digit:]]+(\.gz)?)?\n' "$log")"
  94. ;;
  95. *)
  96. exit1 "Undefined logpattern for \"$target\""
  97. ;;
  98. esac
  99. if [ $# -gt 0 ]; then
  100. grep_opts=""
  101. for keyword in $@; do
  102. grep_opts="$opts -e $keyword"
  103. done
  104. cat_logs "$logroot" "$logpattern" "$logfilecount" | grep -i $grep_opts | tail -n $tail_history
  105. # [ -f $logroot/$log ] && tail -n 0 -F $logroot/$log | grep -i $grep_opts
  106. else
  107. cat_logs "$logroot" "$logpattern" "$logfilecount" | tail -n $tail_history
  108. # [ -f $logroot/$log ] && tail -n 0 -F $logroot/$log
  109. fi