summaryrefslogtreecommitdiff
path: root/showlog
blob: a659a1efbaa038b49d95c5867bd0eca10c37d973 (plain)
  1. #!/bin/bash
  2. #
  3. # /usr/local/sbin/showlog
  4. # Copyright 2002 Jonas Smedegaard <dr@jones.dk>
  5. #
  6. # $Id: showlog,v 1.5 2002-03-14 14:40:57 jonas Exp $
  7. #
  8. # Show topic-specific log entries
  9. #
  10. # halt on errors (NB! this is a bashism...)
  11. set -e
  12. function usage() {
  13. echo "Usage: $(basename $0) ftp|web|weberror|websuexec|mail|system [<keyword> [<keyword>...]]"
  14. exit 1
  15. }
  16. function exit1() {
  17. echo "Error: $1"
  18. echo "Exiting..."
  19. exit 1
  20. }
  21. tail_history="50"
  22. target=$1
  23. logroot="/var/log"
  24. case "$target" in
  25. ftp)
  26. log="xferlog"
  27. logs="$log.??.gz $log.?.gz $log.? $log"
  28. ;;
  29. web)
  30. logroot="/var/log/apache"
  31. log="access.log"
  32. logs="$log.??.gz $log.?.gz $log.? $log"
  33. ;;
  34. weberror|weberrors)
  35. logroot="/var/log/apache"
  36. log="error.log"
  37. logs="$log.??.gz $log.?.gz $log.? $log"
  38. ;;
  39. websuexec)
  40. logroot="/var/log/apache"
  41. log="suexec.log"
  42. logs="$log.??.gz $log.?.gz $log.? $log"
  43. ;;
  44. mail)
  45. log="mail.log"
  46. logs="$log.??.gz $log.?.gz $log.? $log"
  47. ;;
  48. system)
  49. log="syslog"
  50. logs="$log.??.gz $log.?.gz $log.? $log"
  51. ;;
  52. *)
  53. usage
  54. ;;
  55. esac
  56. shift
  57. function cat_logs() {
  58. logroot=$1
  59. shift
  60. for pattern in $@; do
  61. for file in `find $logroot -name "$pattern" -type f -mindepth 1 -maxdepth 1 -follow | sort`; do
  62. case $pattern in
  63. *.gz)
  64. zcat $file;;
  65. *.bz2)
  66. bzcat $file;;
  67. *)
  68. cat $file;;
  69. esac
  70. done
  71. done
  72. }
  73. if [ $# \> 0 ]; then
  74. grep_opts=""
  75. for keyword in $@; do
  76. grep_opts="$opts -e $keyword"
  77. done
  78. cat_logs $logroot $logs | grep -i $grep_opts | tail -n $tail_history
  79. [ -f $logroot/$log ] && tail -n 0 -f $logroot/$log | grep -i $grep_opts
  80. else
  81. cat_logs $logroot $logs | tail -n $tail_history
  82. [ -f $logroot/$log ] && tail -n 0 -f $logroot/$log
  83. fi