adm-mrtg
上传用户:shbosideng
上传日期:2013-05-04
资源大小:1555k
文件大小:4k
源码类别:

SNMP编程

开发平台:

C/C++

  1. #!/usr/bin/ksh 
  2. # This script organizes config files for MRTG
  3. # and restarts the MRTG processes cleanly.
  4. # Author: Scott Ripley, U.S. House of Representatives
  5. # Version: 1.0 (and all that a 1.0 release entails)
  6. # Contact: scott.ripley@mail.house.gov
  7. # Copyright: (C) 2001 Scott Ripley 
  8. # This program is free software; you can redistribute it and/or
  9. # modify it under the terms of the GNU General Public License
  10. # as published by the Free Software Foundation; either version 2
  11. # of the License, or (at your option) any later version.
  12. # This program is distributed in the hope that it will be useful,
  13. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. # See the GNU General Public License for more details.
  16. # Change these directores to match your configuration for MRTG
  17. MRTG=/usr/local/mrtg/bin
  18. # TARHOME is the location of the back-up files. It should be another volume
  19. TARHOME=/usr/local/mrtg/bin
  20. # Location of log files
  21. WEBHOME=/usr/local/apache/htdocs/mrtg_images
  22. cd $MRTG 
  23. # Initialize the variables and temp files
  24. typeset -i CFGLINE
  25. typeset -i MAXLINE
  26. CFGLINE=1
  27. MAXLINE=1
  28. CFG="$MRTG"/mrtgcfgs.run
  29. CFGNUM="$MRTG"/cfgnum.run
  30. MCNAME=`uname -n`
  31. EXIT=N
  32. DATE=`date '+%m%d%y%H%M' `
  33. # TARHOME is the location of the back-up files. It should be another volume
  34. TARHOME=/usr/local/mrtg/bin
  35. WEBHOME=/usr/local/apache/htdocs/mrtg_images
  36. # Set tabs for display columns
  37. stty tabs
  38. tabs 10,30,40,45 
  39.  
  40. # Main loop
  41. while [ "$EXIT" = N ]
  42. do
  43. # reads the pid files and inputs them into a file 
  44. ls -go *pid | sed 's/[ ][ ]/ /g' | cut -d"." -f1 > "$CFG"
  45. nl -bt -nrz -w2 "$CFG" > "$CFGNUM" # numbers the lines in the file
  46. # sets the number of configs loaded, for error testing
  47. MAXLINE=`wc -l "$CFG" | cut -d" " -f7 `
  48. clear
  49. printf "nnThe following MRTG configs are running on "$MCNAME":n"
  50. printf "ntConfig namettRunning Sincen"
  51. printf "t-----------tt-------------n"
  52. # prints out the appropriate fields on-screen
  53. nawk ' { print "t" $1,$8".cfg tt" $5,$6,$7 } ' "$CFGNUM"
  54. printf "n"
  55. printf " Which file would you like to reload? (b to back-up, q to quit) c"
  56. read X
  57. case "$X" in
  58. [qQ] )
  59. EXIT=Y # I quit!
  60. ;;
  61. [bB] )
  62. printf "n Backup *.cfg & *.log files? c"
  63. read V
  64. case "$V" in
  65. 'y' | 'Y' )
  66. CNAME=MRTG_"$DATE".cfgs.tar
  67. tar cvf "$TARHOME"/"$CNAME" "$MRTG"/*.cfg
  68. chmod 0400 "$TARHOME"/"$CNAME"
  69. LNAME=MRTG_"$DATE".logs.tar
  70. find "$WEBHOME" | egrep  -e ".log$|.old$" > mrtgtar.run
  71. tar cvf "$LNAME" -I mrtgtar.run
  72. chmod 0600 "$TARHOME"/"$CNAME"
  73. chmod 0600 "$TARHOME"/"$LNAME"
  74. # printf "nGzipping files..."
  75. # gzip "$TARHOME"/"$CNAME" 
  76. # gzip "$TARHOME"/"$LNAME" 
  77. printf "nConfig files backed up to `ls "$TARHOME"/MRTG_"$DATE".cfg*` "
  78. printf "nLog files backed up to `ls "$TARHOME"/MRTG_"$DATE".log*` "
  79. printf "nPress return to continue..."
  80. read U
  81. ;;
  82. * )
  83. printf "nBackup aborted."
  84. sleep 3
  85. ;;
  86. esac
  87. ;;
  88. [0-9][0-9] ) # If the number entered is between 0 and 99...
  89. # and if the number is <= the no. of configs loaded
  90. if [ "$X" -le "$MAXLINE" ] # 
  91. then
  92. FILE=`sed -n ''$X'p' "$CFGNUM" | cut -d" " -f11 ` # put filename into $FILE
  93. echo " Okay to restart "$FILE".cfg? c"
  94. read Y
  95. case "$Y" in 
  96. 'y' | 'Y' )
  97. FKILL=`cat "$MRTG""/""$FILE"".pid"` # Set the variable with the PID
  98. kill -9 $FKILL   # Kill it 
  99. rm $MRTG/$FILE".pid" # Remove the file
  100. $MRTG"/mrtg" $FILE".cfg" # Restart MRTG with the config file
  101. sleep 8 # Wait for new PID file to be created
  102. echo "New PID for "$FILE".cfg is `cat "$MRTG"/"$FILE".pid` "
  103. ;;
  104. *)
  105. echo "nRestart aborted!"
  106. ;;
  107. esac
  108. else
  109. echo "Entry Invalid! Press return to continue..."
  110. read ZZ
  111. fi
  112. ;;
  113. *)
  114. echo "Entry Invalid! Press return to continue..."
  115.                 read ZZ
  116. ;;
  117. esac
  118. done
  119. # For security/housekeeping reasons, we clean out the temp files here.
  120. cat /dev/null >  "$MRTG"/mrtgcfgs.run
  121. cat /dev/null >  "$MRTG"/cfgnum.run
  122. cat /dev/null >  "$MRTG"/cfgsed.run
  123. cat /dev/null >  "$MRTG"/mrtgtar.run
  124. exit 0