Revert "Revert "and added files""
[bcm963xx.git] / userapps / opensource / net-snmp / local / snmp-ucd.sh
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
13 USAGE="Usage: `basename $0` start|stop|restart"
14
15
16
17 #------------------------------------ -o- 
18 # Globals.
19 #
20 DAEMONLOG=/var/log/snmpd.log
21   TRAPLOG=/var/log/snmptrapd.log
22    LOGDIR=/var/log/SNMPDLOGS
23
24 D=".`date '+%h%d_%H%M' | sed 's/\([a-z]\)0/\1/' | tr 'A-Z' 'a-z'`"
25
26 PSARGS=auwwx
27 #PSARGS=-ef             # Solaris.
28
29 DEBUGFLAG=              # -D    # Toggles use of debugging
30
31
32
33
34 #------------------------------------ -o- 
35 # Function definitions.
36 #
37 killproc() {    # <program> [signal]
38         base= 
39         killlevel="-9" 
40         notset=1 
41         pid=
42
43
44         #
45         # Parse.
46         #
47         [ $# = 0 ] && {
48                 echo "`basename $0`: Wrong arguments to killproc()." 1>&2
49                 return 1
50         }
51         base="`basename $1`"
52         [ -n "$2" ] && {
53                 killlevel=$2
54                 notset=0
55         }
56
57
58         #
59         # Kill process.
60         #
61         pid=`pidofproc $base 2>/dev/null`
62         [ -z "$pid" ] && {
63                 pid=`ps $PSARGS | egrep $base | egrep -v egrep | egrep -v $0 | awk '{ print $2 }'`;
64         }
65         [ -z "$pid" ] && {
66                 echo "`basename $0`: killproc: Could not find process ID."
67         }
68
69         [ -n "$pid" ] && {
70                 echo -n "$base "
71
72                 #
73                 # Kill with -TERM then -KILL by default.  Use given
74                 # instead if one was passed in.
75                 #
76                 [ "$notset" = 1 ] && {
77                         kill -TERM $pid
78                         sleep 1
79
80                         [ -n "`ps $PSARGS |
81                                         awk '{print $2}' | grep $pid`" ] && {
82                                 sleep 3
83                                 kill -KILL $pid
84                         }
85
86                         true
87                 } || {
88                         kill $killlevel $pid
89                 }
90         }
91
92         rm -f /var/run/$base.pid
93
94 }  # end killproc()
95
96
97 pidofproc() {   # <program>
98         pid=
99
100         [ $# = 0 ] && {
101                 echo "`basename $0`: Wrong argument to pidofproc()."  1>&2
102                 return 1
103         }
104
105         #
106         # Try looking for a /var/run file.
107         #
108         [ -f /var/run/$1.pid ] && {
109                 pid=`head -1 /var/run/$1.pid`
110
111                 [ -n "$pid" ] && {
112                         echo $pid
113                         return 0
114                 }
115         }
116
117         #
118         # Try pidof.  (Linux offering.)
119         #
120         pid=`pidof $1`
121         [ -n "$pid" ] && {
122                 echo $pid
123                 return 0
124         }
125
126         #
127         # Try ps.
128         #
129         ps $PSARGS | awk '      BEGIN   { prog=ARGV[1]; ARGC=1 } 
130                         {       if ((prog == $11) ||
131                                         (("(" prog ")") == $11) ||
132                                                 ((prog ":") == $11))
133                                 {
134                                         print $2
135                                 }
136                         }' $1
137 }  # end pidofproc()
138
139
140
141 #------------------------------------ -o- 
142 # Action.
143 #
144 case "$1" in
145   start)
146         echo "Starting SNMP. "
147
148         cp $DAEMONLOG ${DAEMONLOG}$D
149         cp $TRAPLOG ${TRAPLOG}$D
150         cat /dev/null >$TRAPLOG
151
152         [ ! -e $LOGDIR ] && mkdir $LOGDIR
153         mv ${DAEMONLOG}$D ${TRAPLOG}$D $LOGDIR
154         gzip -r $LOGDIR 2>/dev/null &
155
156         snmpd -a -d -V $DEBUGFLAG
157         snmptrapd -P >>$TRAPLOG &
158
159         echo
160         ;;
161
162   stop)
163         echo -n "Shutting down SNMP: "
164
165         killproc snmpd
166         killproc snmptrapd
167
168         echo
169         ;;
170
171   restart)
172         $0 stop
173         $0 start
174         ;;
175
176   *)
177         echo $USAGE     1>&2
178         exit 1
179 esac
180
181
182
183 #------------------------------------ -o- 
184 #
185 exit 0
186
187