Contents of /tags/init-0_5_6/sbin/rc-config
Parent Directory | Revision Log
Revision 104 -
(show annotations)
(download)
Fri Jul 1 18:07:21 2005 UTC (19 years, 3 months ago) by niro
Original Path: trunk/magellan-initscripts/sbin/rc-config
File size: 4535 byte(s)
Fri Jul 1 18:07:21 2005 UTC (19 years, 3 months ago) by niro
Original Path: trunk/magellan-initscripts/sbin/rc-config
File size: 4535 byte(s)
cleaned
1 | #!/bin/bash |
2 | |
3 | RC_INIT_BASE=/etc/init.d |
4 | RC_EXCLUDE="rc functions template splash-functions" |
5 | |
6 | VERSION=0.2 |
7 | |
8 | get_run_levels(){ |
9 | local SCRIPT |
10 | local ALL_LEVELS |
11 | |
12 | SCRIPT=${RC_INIT_BASE}/$1 |
13 | ALL_LEVELS=$(grep -i "#%rlevels:" ${SCRIPT} | sed -e 's/#%rlevels://g') |
14 | |
15 | echo ${ALL_LEVELS} |
16 | |
17 | return 0 |
18 | } |
19 | |
20 | |
21 | get_needs() { |
22 | local SCRIPT |
23 | local ALL_LEVELS |
24 | |
25 | SCRIPT=${RC_INIT_BASE}/$1 |
26 | ALL_LEVELS=$(grep -i "#%needs:" ${SCRIPT} | sed -e 's/#%needs://g') |
27 | |
28 | echo ${ALL_LEVELS} |
29 | |
30 | return 0 |
31 | } |
32 | |
33 | get_before() { |
34 | local SCRIPT |
35 | local ALL_LEVELS |
36 | |
37 | SCRIPT=${RC_INIT_BASE}/$1 |
38 | ALL_LEVELS=$(grep -i "#%before:" ${SCRIPT} | sed -e 's/#%before://g') |
39 | |
40 | echo ${ALL_LEVELS} |
41 | |
42 | return 0 |
43 | } |
44 | |
45 | get_after() { |
46 | local SCRIPT |
47 | local ALL_LEVELS |
48 | |
49 | SCRIPT=${RC_INIT_BASE}/$1 |
50 | ALL_LEVELS=$(grep -i "#%after:" ${SCRIPT} | sed -e 's/#%after://g') |
51 | |
52 | echo ${ALL_LEVELS} |
53 | |
54 | return 0 |
55 | } |
56 | |
57 | get_start() { |
58 | local SCRIPT |
59 | local ALL_LEVELS |
60 | |
61 | SCRIPT=${RC_INIT_BASE}/$1 |
62 | ALL_LEVELS=$(grep -i "#%start:" ${SCRIPT} | sed -e 's/#%start://g') |
63 | |
64 | echo ${ALL_LEVELS} |
65 | |
66 | return 0 |
67 | } |
68 | |
69 | get_stop() { |
70 | local SCRIPT |
71 | local ALL_LEVELS |
72 | |
73 | SCRIPT=${RC_INIT_BASE}/$1 |
74 | ALL_LEVELS=$(grep -i "#%stop:" ${SCRIPT} | sed -e 's/#%stop://g') |
75 | |
76 | echo ${ALL_LEVELS} |
77 | |
78 | return 0 |
79 | } |
80 | |
81 | |
82 | |
83 | rc_service_add() { |
84 | RC_SERVICE=$1 |
85 | RC_START=$(get_start ${RC_SERVICE}) |
86 | RC_STOP=$(get_stop ${RC_SERVICE}) |
87 | |
88 | echo "Adding ${RC_SERVICE} to:" |
89 | for i in $(get_run_levels ${RC_SERVICE}) |
90 | do |
91 | case ${i} in |
92 | # start |
93 | ?:s) |
94 | [ "${i}" == "7:s" ] && i="sysinit:s" |
95 | echo -e "\t\t[rc${i/:s/}.d -> S${RC_START}]" |
96 | ln -snf ../init.d/${RC_SERVICE} \ |
97 | /etc/rc.d/rc${i/:s/}.d/S${RC_START}${RC_SERVICE} |
98 | ;; |
99 | # stop |
100 | ?:k) |
101 | [ "${i}" == "7:k" ] && i="sysinit:k" |
102 | echo -e "\t\t[rc${i/:k/}.d -> K${RC_STOP}]" |
103 | ln -snf ../init.d/${RC_SERVICE} \ |
104 | /etc/rc.d/rc${i/:k/}.d/K${RC_STOP}${RC_SERVICE} |
105 | ;; |
106 | *) |
107 | echo "error" |
108 | exit 1 |
109 | ;; |
110 | esac |
111 | done |
112 | } |
113 | |
114 | rc_service_del(){ |
115 | RC_SERVICE=$1 |
116 | |
117 | echo "Deleting ${RC_SERVICE} from all runlevels:" |
118 | for i in 0 1 2 3 4 5 6 sysinit |
119 | do |
120 | for z in 00 01 02 03 04 05 06 07 08 09 $(seq 10 99) |
121 | do |
122 | if [ -L "/etc/rc.d/rc${i}.d/S${z}${RC_SERVICE}" ] |
123 | then |
124 | echo -e "\t\t[rc${i}.d <- S${z}]" |
125 | rm /etc/rc.d/rc${i}.d/S${z}${RC_SERVICE} |
126 | fi |
127 | |
128 | if [ -L "/etc/rc.d/rc${i}.d/K${z}${RC_SERVICE}" ] |
129 | then |
130 | echo -e "\t\t[rc${i}.d <- K${z}]" |
131 | rm /etc/rc.d/rc${i}.d/K${z}${RC_SERVICE} |
132 | fi |
133 | done |
134 | done |
135 | } |
136 | |
137 | rc_service_show() { |
138 | RC_SERVICE=$1 |
139 | |
140 | local ALL_RUNLEVELS |
141 | |
142 | # read'em (single) |
143 | for i in $(seq 0 7) |
144 | do |
145 | if [ ${i} -eq 7 ] |
146 | then |
147 | level=sysinit |
148 | else |
149 | level=${i} |
150 | fi |
151 | |
152 | for script in /etc/rc.d/rc${level}.d/* |
153 | do |
154 | x="$(basename ${script})" |
155 | if [ "${x/???/}" == "${RC_SERVICE}" ] |
156 | then |
157 | ALL_RUNLEVELS[${i}]=${x/${RC_SERVICE}/} |
158 | fi |
159 | done |
160 | done |
161 | |
162 | #show them (single) |
163 | echo -n "${RC_SERVICE}: " |
164 | for i in $(seq 0 7) |
165 | do |
166 | if [ ! -z "${ALL_RUNLEVELS[${i}]}" ] |
167 | then |
168 | echo -n "[${i}:${ALL_RUNLEVELS[${i}]}] " |
169 | fi |
170 | done |
171 | echo |
172 | } |
173 | |
174 | check_not_excluded(){ |
175 | local SCRIPT |
176 | SCRIPT=$1 |
177 | |
178 | for i in ${RC_EXCLUDE} |
179 | do |
180 | if [ ${SCRIPT} == ${i} ] |
181 | then |
182 | return 1 |
183 | fi |
184 | done |
185 | |
186 | return 0 |
187 | } |
188 | |
189 | |
190 | chg_initdefault() { |
191 | local newinitdef |
192 | declare -i newinitdef="$1" |
193 | |
194 | if [ -z "$newinitdef" ] |
195 | then |
196 | echo "You must give an initlevel." |
197 | exit 1 |
198 | fi |
199 | |
200 | if [ $newinitdef -le 0 -a $newinitdef -ge 6 ] |
201 | then |
202 | echo "You can only choose initlevels between 1-5." |
203 | exit 1 |
204 | fi |
205 | |
206 | current=$(cat /etc/inittab|grep initdefault) |
207 | |
208 | cp /etc/inittab /etc/inittab-orig |
209 | sed -e "s/${current}/id:${newinitdef}:initdefault:/g" \ |
210 | /etc/inittab-orig > /etc/inittab |
211 | if [ "$?" == "0" ] |
212 | then |
213 | rm -f /etc/inittab-orig |
214 | echo "Changed default initlevel to ${newinitdef} successfully." |
215 | exit 0 |
216 | else |
217 | echo "Error: original inittab was saved to /etc/inittab-orig" |
218 | exit 1 |
219 | fi |
220 | } |
221 | |
222 | usage() { |
223 | echo "Magellan RC Configurator v${VERSION} -- Niels Rogalla (niro@magellan-linux.de)" |
224 | echo -e "\nUsage: $(basename $0) [Option] [File] ..." |
225 | echo -e " add adds script to runlevel" |
226 | echo -e " del deletes script from runlevel" |
227 | echo -e " show shows current runlevel settings" |
228 | echo -e " default x changes default runlevel to x" |
229 | echo -e "\n" |
230 | } |
231 | |
232 | case $1 in |
233 | add) |
234 | rc_service_add $2 |
235 | ;; |
236 | del) |
237 | rc_service_del $2 |
238 | ;; |
239 | show) |
240 | # show all |
241 | if [ -z "$2" ] |
242 | then |
243 | echo "Currently configured Services:" |
244 | for i in ${RC_INIT_BASE}/* |
245 | do |
246 | x=$(basename ${i}) |
247 | if check_not_excluded ${x} |
248 | then |
249 | rc_service_show ${x} |
250 | fi |
251 | done |
252 | else |
253 | echo "Currently configured Services:" |
254 | rc_service_show $2 |
255 | fi |
256 | ;; |
257 | default) |
258 | chg_initdefault $2 |
259 | ;; |
260 | *) |
261 | usage |
262 | ;; |
263 | esac |
Properties
Name | Value |
---|---|
svn:executable | * |