Magellan Linux

Contents of /branches/unlabeled-1.1.1/magellan-initscripts/sbin/rc-config

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2 - (show annotations) (download)
Mon Dec 13 22:52:07 2004 UTC (19 years, 4 months ago) by niro
File size: 6455 byte(s)
imported.

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 *