1 |
#!/bin/bash |
#!/bin/bash |
2 |
# $Header: /home/cvsd/magellan-cvs/magellan-src/magellan-initscripts/sbin/rc-config,v 1.4 2005-09-09 16:28:55 niro Exp $ |
# $Header: /home/cvsd/magellan-cvs/magellan-src/magellan-initscripts/sbin/rc-config,v 1.5 2006-03-25 21:13:09 niro Exp $ |
3 |
|
|
4 |
RC_INIT_BASE=${MROOT}/etc/init.d |
RC_INIT_BASE=${MROOT}/etc/init.d |
5 |
RC_EXCLUDE="rc functions template splash-functions" |
RC_EXCLUDE="rc functions template splash-functions" |
6 |
|
|
7 |
VERSION=0.3 |
VERSION=0.3 |
8 |
|
|
9 |
get_run_levels(){ |
get_run_levels() |
10 |
|
{ |
11 |
local SCRIPT |
local SCRIPT |
12 |
local ALL_LEVELS |
local ALL_LEVELS |
13 |
|
|
20 |
} |
} |
21 |
|
|
22 |
|
|
23 |
get_needs() { |
get_needs() |
24 |
|
{ |
25 |
local SCRIPT |
local SCRIPT |
26 |
local ALL_LEVELS |
local ALL_LEVELS |
27 |
|
|
33 |
return 0 |
return 0 |
34 |
} |
} |
35 |
|
|
36 |
get_before() { |
get_before() |
37 |
|
{ |
38 |
local SCRIPT |
local SCRIPT |
39 |
local ALL_LEVELS |
local ALL_LEVELS |
40 |
|
|
46 |
return 0 |
return 0 |
47 |
} |
} |
48 |
|
|
49 |
get_after() { |
get_after() |
50 |
|
{ |
51 |
local SCRIPT |
local SCRIPT |
52 |
local ALL_LEVELS |
local ALL_LEVELS |
53 |
|
|
59 |
return 0 |
return 0 |
60 |
} |
} |
61 |
|
|
62 |
get_start() { |
get_start() |
63 |
|
{ |
64 |
local SCRIPT |
local SCRIPT |
65 |
local ALL_LEVELS |
local ALL_LEVELS |
66 |
|
|
72 |
return 0 |
return 0 |
73 |
} |
} |
74 |
|
|
75 |
get_stop() { |
get_stop() |
76 |
|
{ |
77 |
local SCRIPT |
local SCRIPT |
78 |
local ALL_LEVELS |
local ALL_LEVELS |
79 |
|
|
87 |
|
|
88 |
|
|
89 |
|
|
90 |
rc_service_add() { |
rc_service_add() |
91 |
|
{ |
92 |
RC_SERVICE=$1 |
RC_SERVICE=$1 |
93 |
RC_START=$(get_start ${RC_SERVICE}) |
RC_START=$(get_start ${RC_SERVICE}) |
94 |
RC_STOP=$(get_stop ${RC_SERVICE}) |
RC_STOP=$(get_stop ${RC_SERVICE}) |
99 |
case ${i} in |
case ${i} in |
100 |
# start |
# start |
101 |
?:s) |
?:s) |
102 |
[ "${i}" == "7:s" ] && i="sysinit:s" |
[[ ${i} = 7:s ]] && i="sysinit:s" |
103 |
echo -e "\t\t[rc${i/:s/}.d -> S${RC_START}]" |
echo -e "\t\t[rc${i/:s/}.d -> S${RC_START}]" |
104 |
ln -snf ../init.d/${RC_SERVICE} \ |
ln -snf ../init.d/${RC_SERVICE} \ |
105 |
${MROOT}/etc/rc.d/rc${i/:s/}.d/S${RC_START}${RC_SERVICE} |
${MROOT}/etc/rc.d/rc${i/:s/}.d/S${RC_START}${RC_SERVICE} |
106 |
;; |
;; |
107 |
# stop |
# stop |
108 |
?:k) |
?:k) |
109 |
[ "${i}" == "7:k" ] && i="sysinit:k" |
[[ ${i} = 7:k ]] && i="sysinit:k" |
110 |
echo -e "\t\t[rc${i/:k/}.d -> K${RC_STOP}]" |
echo -e "\t\t[rc${i/:k/}.d -> K${RC_STOP}]" |
111 |
ln -snf ../init.d/${RC_SERVICE} \ |
ln -snf ../init.d/${RC_SERVICE} \ |
112 |
${MROOT}/etc/rc.d/rc${i/:k/}.d/K${RC_STOP}${RC_SERVICE} |
${MROOT}/etc/rc.d/rc${i/:k/}.d/K${RC_STOP}${RC_SERVICE} |
119 |
done |
done |
120 |
} |
} |
121 |
|
|
122 |
rc_service_del(){ |
rc_service_del() |
123 |
|
{ |
124 |
RC_SERVICE=$1 |
RC_SERVICE=$1 |
125 |
|
|
126 |
echo "Deleting ${RC_SERVICE} from all runlevels:" |
echo "Deleting ${RC_SERVICE} from all runlevels:" |
143 |
done |
done |
144 |
} |
} |
145 |
|
|
146 |
rc_service_show() { |
rc_service_show() |
147 |
|
{ |
148 |
RC_SERVICE=$1 |
RC_SERVICE=$1 |
149 |
|
|
150 |
local ALL_RUNLEVELS |
local ALL_RUNLEVELS |
152 |
# read'em (single) |
# read'em (single) |
153 |
for i in $(seq 0 7) |
for i in $(seq 0 7) |
154 |
do |
do |
155 |
if [ ${i} -eq 7 ] |
level=${i} |
156 |
then |
[[ ${i} = 7 ]] && level=sysinit |
|
level=sysinit |
|
|
else |
|
|
level=${i} |
|
|
fi |
|
157 |
|
|
158 |
for script in ${MROOT}/etc/rc.d/rc${level}.d/* |
for script in ${MROOT}/etc/rc.d/rc${level}.d/* |
159 |
do |
do |
160 |
x="$(basename ${script})" |
x="$(basename ${script})" |
161 |
if [ "${x/???/}" == "${RC_SERVICE}" ] |
[[ ${x/???/} = ${RC_SERVICE} ]] && |
|
then |
|
162 |
ALL_RUNLEVELS[${i}]=${x/${RC_SERVICE}/} |
ALL_RUNLEVELS[${i}]=${x/${RC_SERVICE}/} |
|
fi |
|
163 |
done |
done |
164 |
done |
done |
165 |
|
|
167 |
echo -n "${RC_SERVICE}: " |
echo -n "${RC_SERVICE}: " |
168 |
for i in $(seq 0 7) |
for i in $(seq 0 7) |
169 |
do |
do |
170 |
if [ ! -z "${ALL_RUNLEVELS[${i}]}" ] |
[[ ! -z ${ALL_RUNLEVELS[${i}]} ]] && |
|
then |
|
171 |
echo -n "[${i}:${ALL_RUNLEVELS[${i}]}] " |
echo -n "[${i}:${ALL_RUNLEVELS[${i}]}] " |
|
fi |
|
172 |
done |
done |
173 |
echo |
echo |
174 |
} |
} |
175 |
|
|
176 |
check_not_excluded(){ |
check_not_excluded() |
177 |
|
{ |
178 |
local SCRIPT |
local SCRIPT |
179 |
SCRIPT=$1 |
SCRIPT=$1 |
180 |
|
|
181 |
for i in ${RC_EXCLUDE} |
for i in ${RC_EXCLUDE} |
182 |
do |
do |
183 |
if [ ${SCRIPT} == ${i} ] |
[[ ${SCRIPT} = ${i} ]] && return 1 |
|
then |
|
|
return 1 |
|
|
fi |
|
184 |
done |
done |
185 |
|
|
186 |
return 0 |
return 0 |
187 |
} |
} |
188 |
|
|
189 |
|
|
190 |
chg_initdefault() { |
chg_initdefault() |
191 |
|
{ |
192 |
local newinitdef |
local newinitdef |
193 |
declare -i newinitdef="$1" |
declare -i newinitdef="$1" |
194 |
|
|
195 |
if [ -z "$newinitdef" ] |
if [[ -z ${newinitdef} ]] |
196 |
then |
then |
197 |
echo "You must give an initlevel." |
echo "You must give an initlevel." |
198 |
exit 1 |
exit 1 |
199 |
fi |
fi |
200 |
|
|
201 |
if [ $newinitdef -le 0 -a $newinitdef -ge 6 ] |
if [ ${newinitdef} -le 0 -a ${newinitdef} -ge 6 ] |
202 |
then |
then |
203 |
echo "You can only choose initlevels between 1-5." |
echo "You can only choose initlevels between 1-5." |
204 |
exit 1 |
exit 1 |
205 |
fi |
fi |
206 |
|
|
207 |
current=$(cat ${MROOT}/etc/inittab|grep initdefault) |
current=$(cat ${MROOT}/etc/inittab | grep initdefault) |
208 |
|
|
209 |
cp ${MROOT}/etc/inittab ${MROOT}/etc/inittab-orig |
cp ${MROOT}/etc/inittab ${MROOT}/etc/inittab-orig |
210 |
sed -e "s/${current}/id:${newinitdef}:initdefault:/g" \ |
sed -e "s/${current}/id:${newinitdef}:initdefault:/g" \ |
211 |
${MROOT}/etc/inittab-orig > /etc/inittab |
${MROOT}/etc/inittab-orig > ${MROOT}/etc/inittab |
212 |
if [ "$?" == "0" ] |
if [[ $? = 0 ]] |
213 |
then |
then |
214 |
rm -f ${MROOT}/etc/inittab-orig |
rm -f ${MROOT}/etc/inittab-orig |
215 |
echo "Changed default initlevel to ${newinitdef} successfully." |
echo "Changed default initlevel to ${newinitdef} successfully." |
220 |
fi |
fi |
221 |
} |
} |
222 |
|
|
223 |
usage() { |
usage() |
224 |
|
{ |
225 |
echo "Magellan RC Configurator v${VERSION} -- Niels Rogalla (niro@magellan-linux.de)" |
echo "Magellan RC Configurator v${VERSION} -- Niels Rogalla (niro@magellan-linux.de)" |
226 |
echo -e "\nUsage: $(basename $0) [Option] [File] ..." |
echo -e "\nUsage: $(basename $0) [Option] [File] ..." |
227 |
echo -e " add adds script to runlevel" |
echo -e " add adds script to runlevel" |
240 |
;; |
;; |
241 |
show) |
show) |
242 |
# show all |
# show all |
243 |
if [ -z "$2" ] |
if [[ -z $2 ]] |
244 |
then |
then |
245 |
echo "Currently configured Services:" |
echo "Currently configured Services:" |
246 |
for i in ${RC_INIT_BASE}/* |
for i in ${RC_INIT_BASE}/* |