mirror of
https://gitee.com/acl-dev/acl.git
synced 2024-12-16 01:40:52 +08:00
198 lines
3.9 KiB
Bash
Executable File
198 lines
3.9 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
###############################################################################
|
|
PATH=/bin:/usr/bin:/usr/sbin:/usr/etc:/sbin:/etc
|
|
tempdir="/tmp"
|
|
|
|
umask 022
|
|
|
|
function censored_ls() {
|
|
ls "$@" | egrep -v '^\.|/\.|CVS|RCS|SCCS|linux\.d|solaris\.d|hp_ux\.d|example'
|
|
}
|
|
|
|
function compare_or_replace() {
|
|
(cmp $2 $3 >/dev/null 2>&1 && echo Skipping $3...) || {
|
|
echo Updating $3...
|
|
rm -f $tempdir/junk || exit 1
|
|
cp $2 $tempdir/junk || exit 1
|
|
chmod $1 $tempdir/junk || exit 1
|
|
mv -f $tempdir/junk $3 || exit 1
|
|
chmod $1 $3 || exit 1
|
|
}
|
|
}
|
|
###############################################################################
|
|
RPATH=
|
|
function guess_os() {
|
|
os_name=`uname -s`
|
|
os_type=`uname -p`
|
|
case $os_name in
|
|
Linux)
|
|
case $os_type in
|
|
x86_64)
|
|
RPATH="linux64"
|
|
;;
|
|
i686)
|
|
RPATH="linux32"
|
|
;;
|
|
aarch64)
|
|
RPATH="aarch64"
|
|
;;
|
|
*)
|
|
echo "unknown OS - $os_name $os_type"
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
SunOS)
|
|
case $os_type in
|
|
i386)
|
|
RPATH="sunos_x86"
|
|
;;
|
|
*)
|
|
echo "unknown OS - $os_name $os_type"
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
FreeBSD)
|
|
RPATH="freebsd"
|
|
;;
|
|
Darwin)
|
|
RPATH="macos"
|
|
;;
|
|
*)
|
|
echo "unknown OS - $os_name $os_type"
|
|
exit 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
function create_path() {
|
|
test -d $1 || mkdir -p $1 || {
|
|
echo "can't mkdir $1"
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
function copy_file() {
|
|
test -f $2 && {
|
|
compare_or_replace $1 $2 $3 || {
|
|
echo "copy file: $2 error"
|
|
exit 1
|
|
}
|
|
}
|
|
}
|
|
|
|
function install_file() {
|
|
rm -f $tempdir/junk2 || {
|
|
echo "can't remove file: $tempdir/junk2"
|
|
exit 1
|
|
}
|
|
test -f $2 && {
|
|
cat $2 | sed -e 's;{install_path};'$INSTALL_PATH';;' >$tempdir/junk2 || {
|
|
echo "can't create file: $tempdir/junk2"
|
|
exit 1
|
|
}
|
|
compare_or_replace $1 $tempdir/junk2 $3 || {
|
|
echo "can't move to file: $3"
|
|
exit 1
|
|
}
|
|
}
|
|
rm -f $tempdir/junk2 || {
|
|
echo "can't remove file: $tempdir/junk2"
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
###############################################################################
|
|
INSTALL_PATH=
|
|
|
|
if [ $# -lt 1 ]
|
|
then
|
|
# echo "parameter not enougth($#)"
|
|
echo "usage:$0 install_path"
|
|
exit 1
|
|
fi
|
|
|
|
if [ $# -eq 2 ]
|
|
then
|
|
PREFIX_PATH=$1
|
|
INSTALL_PATH=$2
|
|
else
|
|
INSTALL_PATH=$1
|
|
PREFIX_PATH=
|
|
fi
|
|
|
|
case $INSTALL_PATH in
|
|
/*) ;;
|
|
no) ;;
|
|
*) echo Error: $INSTALL_PATH should be an absolute path name. 1>&2; exit 1;;
|
|
esac
|
|
|
|
echo Installing to $INSTALL_PATH...
|
|
|
|
BIN_PATH=$PREFIX_PATH$INSTALL_PATH/bin
|
|
SBIN_PATH=$PREFIX_PATH$INSTALL_PATH/sbin
|
|
CONF_PATH=$PREFIX_PATH$INSTALL_PATH/conf
|
|
SH_PATH=$PREFIX_PATH$INSTALL_PATH/sh
|
|
VAR_PATH=$PREFIX_PATH$INSTALL_PATH/var
|
|
|
|
SERVICE_NAME=$<PROGRAM>
|
|
SERVICE_BIN=$SBIN_PATH/$SERVICE_NAME
|
|
SERVICE_CONF=$CONF_PATH/$SERVICE_NAME.cf
|
|
###############################################################################
|
|
|
|
function create_all_path() {
|
|
create_path $INSTALL_PATH
|
|
create_path $BIN_PATH
|
|
create_path $SBIN_PATH
|
|
create_path $SH_PATH
|
|
create_path $CONF_PATH
|
|
create_path $VAR_PATH
|
|
create_path $VAR_PATH/log
|
|
create_path $VAR_PATH/pid
|
|
chmod 1777 $VAR_PATH/log
|
|
}
|
|
|
|
function copy_all_file() {
|
|
copy_file a+x,go+rx $SERVICE_NAME $SERVICE_BIN
|
|
install_file a+x,go-wrx $SERVICE_NAME.cf $SERVICE_CONF
|
|
}
|
|
|
|
MASTER_PATH=/opt/soft/acl-master
|
|
MASTER_CONF=$MASTER_PATH/conf
|
|
MASTER_SERVICES=$MASTER_CONF/services.cf
|
|
MASTER_CTL=$MASTER_PATH/bin/master_ctl
|
|
|
|
function add_master_service() {
|
|
echo ""
|
|
|
|
if [ ! -d $MASTER_CONF ]; then
|
|
echo "$MASTER_CONF not exist!"
|
|
return
|
|
fi
|
|
|
|
if [ -f $MASTER_SERVICES ]; then
|
|
has=`cat $MASTER_SERVICES | grep $SERVICE_CONF | wc -l`
|
|
if [ $has != 0 ]; then
|
|
echo "Service for $SERVICE_CONF already in $MASTER_SERVICES!"
|
|
return
|
|
fi
|
|
fi
|
|
|
|
echo "$SERVICE_CONF" >> $MASTER_SERVICES
|
|
echo "Service added for $SERVICE_CONF"
|
|
|
|
if [ -f $MASTER_CTL ]; then
|
|
echo "Start your service by running:"
|
|
echo "$MASTER_CTL -f $SERVICE_CONF -a start"
|
|
fi
|
|
}
|
|
|
|
guess_os
|
|
create_all_path
|
|
copy_all_file
|
|
add_master_service
|
|
|
|
###############################################################################
|