summaryrefslogtreecommitdiff
path: root/showlog
blob: 2ab11fc8bc27604a0c987a989e63f27a1a72532a (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.9 2006-10-27 12:35:11 jonas Exp $
  7. #
  8. # Show topic-specific log entries
  9. #
  10. set -e
  11. usage() {
  12. echo "Usage: $(basename $0) ftp|web|weberror|websuexec|mail|system [<keyword> [<keyword>...]]"
  13. exit 1
  14. }
  15. exit1() {
  16. echo "Error: $1"
  17. echo "Exiting..."
  18. exit 1
  19. }
  20. cat_logs() {
  21. rootdir=$1
  22. shift
  23. patterns=$@
  24. for pattern in $patterns; do
  25. for file in `find $rootdir -mindepth 1 -maxdepth 1 -name "$pattern" -type f -follow | sort`; do
  26. case $pattern in
  27. *.gz)
  28. zcat $file;;
  29. *.bz2)
  30. bzcat $file;;
  31. *)
  32. cat $file;;
  33. esac
  34. done
  35. done
  36. }
  37. tail_history="50"
  38. target=$1
  39. shift || exit1 "Missing argument"
  40. case "$target" in
  41. ftp)
  42. log="xferlog"
  43. ;;
  44. web)
  45. logroot="/var/log/apache"
  46. log="access.log"
  47. ;;
  48. weberror|weberrors)
  49. logroot="/var/log/apache"
  50. log="error.log"
  51. ;;
  52. websuexec)
  53. logroot="/var/log/apache"
  54. log="suexec.log"
  55. ;;
  56. mail)
  57. log="mail.log"
  58. ;;
  59. system)
  60. log="syslog"
  61. ;;
  62. *)
  63. usage
  64. ;;
  65. esac
  66. case "$target" in
  67. ftp|mail|system)
  68. logroot="/var/log"
  69. ;;
  70. web|weberror|weberrors|websuexec)
  71. logroot="/var/log/apache"
  72. ;;
  73. *)
  74. usage
  75. exit1 "Undefined logroot for \"$target\""
  76. ;;
  77. esac
  78. case "$target" in
  79. ftp|web|weberror|weberrors|websuexec|mail|system)
  80. logpatterns="$log.? $log"
  81. # logpatterns="$log.??.gz $log.?.gz $log.? $log"
  82. ;;
  83. *)
  84. exit1 "Undefined logpattern for \"$target\""
  85. ;;
  86. esac
  87. if [ $# -gt 0 ]; then
  88. grep_opts=""
  89. for keyword in $@; do
  90. grep_opts="$opts -e $keyword"
  91. done
  92. cat_logs $logroot $logpatterns | grep -i $grep_opts | tail -n $tail_history
  93. # [ -f $logroot/$log ] && tail -n 0 -F $logroot/$log | grep -i $grep_opts
  94. else
  95. cat_logs $logroot $logpatterns | tail -n $tail_history
  96. # [ -f $logroot/$log ] && tail -n 0 -F $logroot/$log
  97. fi