snmp-ucd.sh
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:3k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. #!/bin/sh
  2. #
  3. # snmpd-ucd.sh
  4. #
  5. # Start UCD SNMP daemon and trap catcher.  Backup the log file *first*
  6. # since currently the daemon truncates and overwrites any pre-existing file.
  7. #
  8. # killproc() and pidofproc() lifted from Linux's /etc/init.d/functions.
  9. #
  10. # NOTE: Solaris users must uncomment the proper PSARGS definition below.  XXX
  11. #
  12. USAGE="Usage: `basename $0` start|stop|restart"
  13. #------------------------------------ -o- 
  14. # Globals.
  15. #
  16. DAEMONLOG=/var/log/snmpd.log
  17.   TRAPLOG=/var/log/snmptrapd.log
  18.    LOGDIR=/var/log/SNMPDLOGS
  19. D=".`date '+%h%d_%H%M' | sed 's/([a-z])0/1/' | tr 'A-Z' 'a-z'`"
  20. PSARGS=auwwx
  21. #PSARGS=-ef # Solaris.
  22. DEBUGFLAG= # -D # Toggles use of debugging
  23. #------------------------------------ -o- 
  24. # Function definitions.
  25. #
  26. killproc() { # <program> [signal]
  27. base= 
  28. killlevel="-9" 
  29. notset=1 
  30. pid=
  31. #
  32. # Parse.
  33. #
  34. [ $# = 0 ] && {
  35. echo "`basename $0`: Wrong arguments to killproc()." 1>&2
  36. return 1
  37. }
  38. base="`basename $1`"
  39. [ -n "$2" ] && {
  40. killlevel=$2
  41. notset=0
  42. }
  43. #
  44. # Kill process.
  45. #
  46.         pid=`pidofproc $base 2>/dev/null`
  47. [ -z "$pid" ] && {
  48. pid=`ps $PSARGS | egrep $base | egrep -v egrep | egrep -v $0 | awk '{ print $2 }'`;
  49. }
  50. [ -z "$pid" ] && {
  51. echo "`basename $0`: killproc: Could not find process ID."
  52. }
  53.         [ -n "$pid" ] && {
  54.                 echo -n "$base "
  55. #
  56. # Kill with -TERM then -KILL by default.  Use given
  57. # instead if one was passed in.
  58. #
  59. [ "$notset" = 1 ] && {
  60. kill -TERM $pid
  61. sleep 1
  62. [ -n "`ps $PSARGS |
  63. awk '{print $2}' | grep $pid`" ] && {
  64. sleep 3
  65. kill -KILL $pid
  66. }
  67. true
  68. } || {
  69.                 kill $killlevel $pid
  70. }
  71. }
  72.         rm -f /var/run/$base.pid
  73. }  # end killproc()
  74. pidofproc() { # <program>
  75. pid=
  76. [ $# = 0 ] && {
  77. echo "`basename $0`: Wrong argument to pidofproc()."  1>&2
  78. return 1
  79. }
  80. #
  81. # Try looking for a /var/run file.
  82. #
  83. [ -f /var/run/$1.pid ] && {
  84.         pid=`head -1 /var/run/$1.pid`
  85.         [ -n "$pid" ] && {
  86.                 echo $pid
  87.                 return 0
  88. }
  89. }
  90. #
  91. # Try pidof.  (Linux offering.)
  92. #
  93. pid=`pidof $1`
  94. [ -n "$pid" ] && {
  95.         echo $pid
  96.         return 0
  97. }
  98. #
  99. # Try ps.
  100. #
  101. ps $PSARGS | awk ' BEGIN { prog=ARGV[1]; ARGC=1 } 
  102. { if ((prog == $11) ||
  103. (("(" prog ")") == $11) ||
  104. ((prog ":") == $11))
  105. {
  106. print $2
  107. }
  108. }' $1
  109. }  # end pidofproc()
  110. #------------------------------------ -o- 
  111. # Action.
  112. #
  113. case "$1" in
  114.   start)
  115. echo "Starting SNMP. "
  116. cp $DAEMONLOG ${DAEMONLOG}$D
  117. cp $TRAPLOG ${TRAPLOG}$D
  118. cat /dev/null >$TRAPLOG
  119. [ ! -e $LOGDIR ] && mkdir $LOGDIR
  120. mv ${DAEMONLOG}$D ${TRAPLOG}$D $LOGDIR
  121. gzip -r $LOGDIR 2>/dev/null &
  122. snmpd -a -d -V $DEBUGFLAG
  123. snmptrapd -P >>$TRAPLOG &
  124. echo
  125. ;;
  126.   stop)
  127. echo -n "Shutting down SNMP: "
  128. killproc snmpd
  129. killproc snmptrapd
  130. echo
  131. ;;
  132.   restart)
  133.         $0 stop
  134.         $0 start
  135.         ;;
  136.   *)
  137. echo $USAGE 1>&2
  138. exit 1
  139. esac
  140. #------------------------------------ -o- 
  141. #
  142. exit 0