Contents of /tags/init-0_5_5/sbin/rc-config
Parent Directory | Revision Log
Revision 3 -
(show annotations)
(download)
Mon Dec 13 22:52:07 2004 UTC (19 years, 9 months ago) by niro
Original Path: trunk/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: trunk/magellan-initscripts/sbin/rc-config
File size: 6455 byte(s)
This commit was generated by cvs2svn to compensate for changes in r2, which included commits to RCS files with non-trunk default branches.
1 | #!/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 | * |