Annotation of /tags/init-0_5_2/sbin/rc-config
Parent Directory | Revision Log
Revision 2 -
(hide annotations)
(download)
Mon Dec 13 22:52:07 2004 UTC (19 years, 9 months ago) by niro
Original Path: branches/unlabeled-1.1.1/magellan-initscripts/sbin/rc-config
File size: 6455 byte(s)
Mon Dec 13 22:52:07 2004 UTC (19 years, 9 months ago) by niro
Original Path: branches/unlabeled-1.1.1/magellan-initscripts/sbin/rc-config
File size: 6455 byte(s)
imported.
1 | niro | 2 | #!/bin/bash |
2 | |||
3 | |||
4 | #rc-config2 | ||
5 | |||
6 | #header layout | ||
7 | |||
8 | #runlevenumber:start | ||
9 | #runlevenumber:stop | ||
10 | #%rlevels 1:k 2:s | ||
11 | |||
12 | #start number | ||
13 | #%start | ||
14 | |||
15 | #stop number | ||
16 | #%stop | ||
17 | |||
18 | |||
19 | #deps; unused yet | ||
20 | #%needs | ||
21 | #%before | ||
22 | #%after | ||
23 | |||
24 | RC_INIT_BASE=/etc/init.d | ||
25 | RC_EXCLUDE="rc functions template splash-functions" | ||
26 | |||
27 | VERSION=0.2 | ||
28 | |||
29 | get_run_levels(){ | ||
30 | local SCRIPT | ||
31 | local ALL_LEVELS | ||
32 | |||
33 | SCRIPT=${RC_INIT_BASE}/$1 | ||
34 | ALL_LEVELS=$(grep -i "#%rlevels:" ${SCRIPT} | sed -e 's/#%rlevels://g') | ||
35 | |||
36 | echo ${ALL_LEVELS} | ||
37 | |||
38 | return 0 | ||
39 | } | ||
40 | |||
41 | |||
42 | get_needs() { | ||
43 | local SCRIPT | ||
44 | local ALL_LEVELS | ||
45 | |||
46 | SCRIPT=${RC_INIT_BASE}/$1 | ||
47 | ALL_LEVELS=$(grep -i "#%needs:" ${SCRIPT} | sed -e 's/#%needs://g') | ||
48 | |||
49 | echo ${ALL_LEVELS} | ||
50 | |||
51 | return 0 | ||
52 | } | ||
53 | |||
54 | get_before() { | ||
55 | local SCRIPT | ||
56 | local ALL_LEVELS | ||
57 | |||
58 | SCRIPT=${RC_INIT_BASE}/$1 | ||
59 | ALL_LEVELS=$(grep -i "#%before:" ${SCRIPT} | sed -e 's/#%before://g') | ||
60 | |||
61 | echo ${ALL_LEVELS} | ||
62 | |||
63 | return 0 | ||
64 | } | ||
65 | |||
66 | get_after() { | ||
67 | local SCRIPT | ||
68 | local ALL_LEVELS | ||
69 | |||
70 | SCRIPT=${RC_INIT_BASE}/$1 | ||
71 | ALL_LEVELS=$(grep -i "#%after:" ${SCRIPT} | sed -e 's/#%after://g') | ||
72 | |||
73 | echo ${ALL_LEVELS} | ||
74 | |||
75 | return 0 | ||
76 | } | ||
77 | |||
78 | get_start() { | ||
79 | local SCRIPT | ||
80 | local ALL_LEVELS | ||
81 | |||
82 | SCRIPT=${RC_INIT_BASE}/$1 | ||
83 | ALL_LEVELS=$(grep -i "#%start:" ${SCRIPT} | sed -e 's/#%start://g') | ||
84 | |||
85 | echo ${ALL_LEVELS} | ||
86 | |||
87 | return 0 | ||
88 | } | ||
89 | |||
90 | get_stop() { | ||
91 | local SCRIPT | ||
92 | local ALL_LEVELS | ||
93 | |||
94 | SCRIPT=${RC_INIT_BASE}/$1 | ||
95 | ALL_LEVELS=$(grep -i "#%stop:" ${SCRIPT} | sed -e 's/#%stop://g') | ||
96 | |||
97 | echo ${ALL_LEVELS} | ||
98 | |||
99 | return 0 | ||
100 | } | ||
101 | |||
102 | |||
103 | |||
104 | rc_service_add() { | ||
105 | RC_SERVICE=$1 | ||
106 | RC_START=$(get_start ${RC_SERVICE}) | ||
107 | RC_STOP=$(get_stop ${RC_SERVICE}) | ||
108 | |||
109 | echo "Adding ${RC_SERVICE} to:" | ||
110 | for i in $(get_run_levels ${RC_SERVICE}) | ||
111 | do | ||
112 | case ${i} in | ||
113 | #start | ||
114 | ?:s) | ||
115 | [ "${i}" == "7:s" ] && i="sysinit:s" | ||
116 | echo -e "\t\t[rc${i/:s/}.d -> S${RC_START}]" | ||
117 | ln -snf ../init.d/${RC_SERVICE} \ | ||
118 | /etc/rc.d/rc${i/:s/}.d/S${RC_START}${RC_SERVICE} | ||
119 | ;; | ||
120 | #stop | ||
121 | ?:k) | ||
122 | [ "${i}" == "7:k" ] && i="sysinit:k" | ||
123 | echo -e "\t\t[rc${i/:k/}.d -> K${RC_STOP}]" | ||
124 | ln -snf ../init.d/${RC_SERVICE} \ | ||
125 | /etc/rc.d/rc${i/:k/}.d/K${RC_STOP}${RC_SERVICE} | ||
126 | ;; | ||
127 | *) | ||
128 | echo "error" | ||
129 | exit 1 | ||
130 | ;; | ||
131 | esac | ||
132 | done | ||
133 | #echo "." | ||
134 | } | ||
135 | |||
136 | rc_service_del(){ | ||
137 | RC_SERVICE=$1 | ||
138 | |||
139 | echo "Deleting ${RC_SERVICE} from all runlevels:" | ||
140 | for i in 0 1 2 3 4 5 6 sysinit | ||
141 | do | ||
142 | for z in 00 01 02 03 04 05 06 07 08 09 $(seq 10 99) | ||
143 | do | ||
144 | if [ -L "/etc/rc.d/rc${i}.d/S${z}${RC_SERVICE}" ] | ||
145 | then | ||
146 | echo -e "\t\t[rc${i}.d <- S${z}]" | ||
147 | rm /etc/rc.d/rc${i}.d/S${z}${RC_SERVICE} | ||
148 | fi | ||
149 | |||
150 | if [ -L "/etc/rc.d/rc${i}.d/K${z}${RC_SERVICE}" ] | ||
151 | then | ||
152 | echo -e "\t\t[rc${i}.d <- K${z}]" | ||
153 | rm /etc/rc.d/rc${i}.d/K${z}${RC_SERVICE} | ||
154 | fi | ||
155 | done | ||
156 | done | ||
157 | } | ||
158 | |||
159 | rc_service_show_old() { | ||
160 | RC_SERVICE=$1 | ||
161 | |||
162 | local ALL_RUNLEVELS | ||
163 | |||
164 | [ -z "${RC_SERVICE}" ] && RC_SERVICE=all | ||
165 | |||
166 | if [ "${RC_SERVICE}" != all ] | ||
167 | then | ||
168 | #read'em (single) | ||
169 | for i in $(seq 0 7) | ||
170 | do | ||
171 | if [ ${i} -eq 7 ] | ||
172 | then | ||
173 | level=sysinit | ||
174 | else | ||
175 | level=${i} | ||
176 | fi | ||
177 | |||
178 | for script in /etc/rc.d/rc${level}.d/* | ||
179 | do | ||
180 | x="$(basename ${script})" | ||
181 | if [ "${x/???/}" == "${RC_SERVICE}" ] | ||
182 | then | ||
183 | ALL_RUNLEVELS[${i}]=${x/${RC_SERVICE}/} | ||
184 | fi | ||
185 | done | ||
186 | done | ||
187 | |||
188 | #show them (single) | ||
189 | #echo "Currently configured Services:" | ||
190 | echo -n "${RC_SERVICE}: " | ||
191 | for i in $(seq 0 7) | ||
192 | do | ||
193 | if [ ${i} -eq 7 ] | ||
194 | then | ||
195 | level=sysinit | ||
196 | else | ||
197 | level=${i} | ||
198 | fi | ||
199 | |||
200 | if [ ! -z "${ALL_RUNLEVELS[${i}]}" ] | ||
201 | then | ||
202 | echo -n "[${level}:${ALL_RUNLEVELS[${i}]}] " | ||
203 | fi | ||
204 | done | ||
205 | echo | ||
206 | else | ||
207 | local MY_RC_SERVICE | ||
208 | local initscripts | ||
209 | |||
210 | #read'em (all) | ||
211 | echo "Currently configured Services:" | ||
212 | for initscript in ${RC_INIT_BASE}/* | ||
213 | do | ||
214 | MY_RC_SERVICE=$(basename ${initscript}) | ||
215 | unset ALL_RUNLEVELS | ||
216 | unset level i x | ||
217 | |||
218 | for i in $(seq 0 7) | ||
219 | do | ||
220 | if [ ${i} -eq 7 ] | ||
221 | then | ||
222 | level=sysinit | ||
223 | else | ||
224 | level=${i} | ||
225 | fi | ||
226 | |||
227 | for script in /etc/rc.d/rc${level}.d/* | ||
228 | do | ||
229 | x=$(basename ${script}) | ||
230 | if [ "${x/???/}" == "${MY_RC_SERVICE}" ] | ||
231 | then | ||
232 | ALL_RUNLEVELS[${i}]=${x/${MY_RC_SERVICE}/} | ||
233 | fi | ||
234 | done | ||
235 | done | ||
236 | |||
237 | #show them (all) | ||
238 | echo -n "${MY_RC_SERVICE}: " | ||
239 | for i in $(seq 0 7) | ||
240 | do | ||
241 | if [ ${i} -eq 7 ] | ||
242 | then | ||
243 | level=sysinit | ||
244 | else | ||
245 | level=${i} | ||
246 | fi | ||
247 | |||
248 | if [ ! -z "${ALL_RUNLEVELS[${i}]}" ] | ||
249 | then | ||
250 | echo -n "[${level}:${ALL_RUNLEVELS[${i}]}] " | ||
251 | fi | ||
252 | done | ||
253 | echo | ||
254 | done | ||
255 | fi | ||
256 | } | ||
257 | |||
258 | rc_service_show() { | ||
259 | RC_SERVICE=$1 | ||
260 | |||
261 | local ALL_RUNLEVELS | ||
262 | |||
263 | #read'em (single) | ||
264 | for i in $(seq 0 7) | ||
265 | do | ||
266 | if [ ${i} -eq 7 ] | ||
267 | then | ||
268 | level=sysinit | ||
269 | else | ||
270 | level=${i} | ||
271 | fi | ||
272 | |||
273 | for script in /etc/rc.d/rc${level}.d/* | ||
274 | do | ||
275 | x="$(basename ${script})" | ||
276 | if [ "${x/???/}" == "${RC_SERVICE}" ] | ||
277 | then | ||
278 | ALL_RUNLEVELS[${i}]=${x/${RC_SERVICE}/} | ||
279 | fi | ||
280 | done | ||
281 | done | ||
282 | |||
283 | #show them (single) | ||
284 | # echo "Currently configured Services:" | ||
285 | echo -n "${RC_SERVICE}: " | ||
286 | for i in $(seq 0 7) | ||
287 | do | ||
288 | if [ ! -z "${ALL_RUNLEVELS[${i}]}" ] | ||
289 | then | ||
290 | echo -n "[${i}:${ALL_RUNLEVELS[${i}]}] " | ||
291 | fi | ||
292 | done | ||
293 | echo | ||
294 | } | ||
295 | |||
296 | check_not_excluded(){ | ||
297 | local SCRIPT | ||
298 | SCRIPT=$1 | ||
299 | |||
300 | for i in ${RC_EXCLUDE} | ||
301 | do | ||
302 | if [ ${SCRIPT} == ${i} ] | ||
303 | then | ||
304 | return 1 | ||
305 | fi | ||
306 | done | ||
307 | |||
308 | return 0 | ||
309 | } | ||
310 | |||
311 | |||
312 | chg_initdefault() { | ||
313 | local newinitdef | ||
314 | declare -i newinitdef="$1" | ||
315 | |||
316 | if [ -z "$newinitdef" ] | ||
317 | then | ||
318 | echo "You must give an initlevel." | ||
319 | exit 1 | ||
320 | fi | ||
321 | |||
322 | if [ $newinitdef -le 0 -a $newinitdef -ge 6 ] | ||
323 | then | ||
324 | echo "You can only choose initlevels between 1-5." | ||
325 | exit 1 | ||
326 | fi | ||
327 | |||
328 | current=$(cat /etc/inittab|grep initdefault) | ||
329 | #echo "$current" | ||
330 | |||
331 | cp /etc/inittab /etc/inittab-orig | ||
332 | sed -e "s/${current}/id:${newinitdef}:initdefault:/g" \ | ||
333 | /etc/inittab-orig > /etc/inittab | ||
334 | if [ "$?" == "0" ] | ||
335 | then | ||
336 | rm -f /etc/inittab-orig | ||
337 | echo "Changed default initlevel to ${newinitdef} successfully." | ||
338 | exit 0 | ||
339 | else | ||
340 | echo "Error: original inittab was saved to /etc/inittab-orig" | ||
341 | exit 1 | ||
342 | fi | ||
343 | } | ||
344 | |||
345 | |||
346 | usage() { | ||
347 | echo "Magellan RC Configurator v${VERSION} -- Niels Rogalla (niro@magellan-linux.de)" | ||
348 | echo -e "\nUsage: $(basename $0) [Option] [File] ..." | ||
349 | echo -e " add adds script to runlevel" | ||
350 | echo -e " del deletes script from runlevel" | ||
351 | echo -e " show shows current runlevel settings" | ||
352 | echo -e " default x changes default runlevel to x" | ||
353 | echo -e "\n" | ||
354 | } | ||
355 | |||
356 | case $1 in | ||
357 | add) | ||
358 | rc_service_add $2 | ||
359 | ;; | ||
360 | del) | ||
361 | rc_service_del $2 | ||
362 | ;; | ||
363 | show) | ||
364 | #show all | ||
365 | if [ -z "$2" ] | ||
366 | then | ||
367 | echo "Currently configured Services:" | ||
368 | for i in ${RC_INIT_BASE}/* | ||
369 | do | ||
370 | x=$(basename ${i}) | ||
371 | if check_not_excluded ${x} | ||
372 | then | ||
373 | rc_service_show ${x} | ||
374 | fi | ||
375 | done | ||
376 | else | ||
377 | echo "Currently configured Services:" | ||
378 | rc_service_show $2 | ||
379 | fi | ||
380 | ;; | ||
381 | default) | ||
382 | chg_initdefault $2 | ||
383 | ;; | ||
384 | *) | ||
385 | usage | ||
386 | ;; | ||
387 | esac |
Properties
Name | Value |
---|---|
svn:executable | * |