Files
new_install/operation/mk_serv_autoboot.sh
qin bo 0b29c12bcd bug 816
modify opertion part against first review
2010-10-12 14:17:03 +08:00

137 lines
2.7 KiB
Bash
Executable File

#!/bin/bash
#
# DESCRIPTION: this script use for system autoboot services.
# function:
# 1.make a sysmbol link to script of autotboot services,
# 2.generate $pkgname-serv.conf, this configure file use by post_add.
#
# Usage: echo "netkit-base inetd rsh S310"|./mk_serv_autoboot.sh
#
# SCRIPT NAME: mk_serv_autoboot.sh
#
# Input: stdin
# 1. package name of autoboot services
# 2. boot script
# 3. boot service
# 4. boot number
#
# Output:
# NULL
# Return value:
# 1 argument error
# 2 boot script doesn't exist
#
# AUTHOR: Qin Bo
#
# EMAIL: bqin@linx-info.com
#
# DATE: 2010-08-23
#
# HISTORY:
# REVISOR DATE MODIFICATION
# Qin Bo 2010-08-23 create
#
#
#
source ./functions
make_sysmbol_link ()
{
if [ $# -ne 2 ];then
err "$FUNCNAME function argument error, it must have 2 argument!"
return 1
fi
local script="$1"
local number="$2"
for dir in $RC_DIR; do
pushd $dir >>$DEV_LOG &&
if [ -e $INIT_DIR/$script ];then
if [ -L "$dir/$number$script" ];then
# may be the symbol link has already exist, skip it,
# mulit-services, may have common script to boot it.
# ex: rsh and rlogin service start through inetd script.
:
else
ln -sf ../init.d/$script ./$number$script
fi
else
err "$script doesn't exist in $INIT_DIR"
return 2
fi
popd >>$DEV_LOG
done
}
# generate $pkgname-serv.conf, use by $pkgname.post_add
gen_serv_cnf ()
{
if [ $# -ne 2 ];then
err "$FUNCNAME function argument error, it must have 2 argument!"
return 1
fi
local pkgname="$1"
local service="$2"
# may be some boot services needn't configure,
# it also generate pkgname-serv.conf.
# ex: at service, if it need autoboot,
# it also generate at-serv.conf, although it needn't configure.
if [ -e "$SERV_CFG_DIR/$pkgname-serv.conf" ];then
# to avoid duplicate-line in $pkgname-serv.conf, we only append it when $service=yes
# not exist in $pkgname-serv.conf
if [ -z "$(grep "$service=yes" "$SERV_CFG_DIR/$pkgname-serv.conf")" ];then
printf "%s=yes\n" $service >> "$SERV_CFG_DIR"/"$pkgname-serv.conf"
fi
else
printf "%s=yes\n" $service > "$SERV_CFG_DIR"/"$pkgname-serv.conf"
fi
}
mk_serv_autoboot ()
{
local pkgname="$1"
local script="$2"
local service="$3"
local number="$4"
make_sysmbol_link "$script" "$number"
erv
gen_serv_cnf "$pkgname" "$service"
erv
}
main ()
{
local line
info "configure auto boot service"
while read line;do
if [ -n "$line" ];then
mk_serv_autoboot $line
erv
fi
done
info "configure auto boot service success"
}
RCD="$TARGET/etc/rc.d"
INIT_DIR="$RCD/init.d"
# according old Rocky installer, make symbol link in rc3.d and rc5.d
RC_DIR="$RCD/rc3.d $RCD/rc5.d"
SERV_CFG_DIR="$TARGET/var/lib/pkg"
main "$@"