shell 安装脚本实例(启动脚本)

#!/bin/bash

BASEPATH=$(cd `dirname $0`; pwd)

TARGET_DIR=$1
SBR_GROUP=$2
SBR_USER=$3

if [ ! -d $TARGET_DIR ];then
    echo "must be set target dir"
    exit 1
fi
TARGET_DIR=$(echo ${TARGET_DIR%/})

if [ -z $SBR_GROUP ];then
    echo "must be set user group"
    exit 1
fi

if [ -z $SBR_USER ];then
    echo "must be set user"
    exit 1
fi

echo "clamd starting ..."

cat > $BASEPATH/clamd << EOF
#!/bin/bash
#chkconfig: 2346 21 98
#description:clamd main service Daemon

BASEPATH=\$(cd \`dirname \$0\`; pwd)

clamd_path=$TARGET_DIR


export LD_LIBRARY_PATH=\$clamd_path/scan64/lib:\$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=\$clamd_path/scan64/lib64:\$LD_LIBRARY_PATH


start_fun(){
    echo -e "\033[36;1mstart...\033[0m"

    result=\$(ps aux | grep -v grep | grep "$clamd_path/scan64/sbin/clamd")
    if [[ \$result =~ "\$clamd_path/scan64/sbin/clamd" ]];then
        echo -e "\033[36;1mhas started\033[0m"
    else
        \$clamd_path/scan64/sbin/clamd -c \$clamd_path/scan64/etc/clamd.conf
        echo -e "\033[36;1mstart [ok]\033[0m"
    fi
}

stop_fun(){
    echo -e "\033[36;1mstop...\033[0m"

    result=\$(ps aux | grep -v grep | grep "\$clamd_path/scan64/sbin/clamd")
    if [[ \$result =~ "\$clamd_path/scan64/sbin/clamd" ]];then
        pids=\$(ps aux | grep "\$clamd_path/scan64/sbin/clamd" | grep -v grep | awk '{print \$2}')
        echo -e "\033[36;1mstop clamd successful!\033[0m"
        kill -9 \$pids
    else
        echo -e "\033[36;1mclamd not running !\033[0m"
    fi
}

restart_fun(){
    echo -e "\033[36;1mrestart...\033[0m"

    result=\$(ps aux | grep -v grep | grep "\$clamd_path/scan64/sbin/clamd")
    if [[ \$result =~ "\$clamd_path/scan64/sbin/clamd" ]];then
        pids=\$(ps aux | grep "\$clamd_path/scan64/sbin/clamd" | grep -v grep | awk '{print \$2}')
        kill -9 \$pids
        \$clamd_path/scan64/sbin/clamd -c \$clamd_path/scan64/etc/clamd.conf
        if [[ \$result =~ "\$clamd_path/scan64/sbin/clamd" ]];then
            echo -e "\033[36;1mrestart clamd [ok]\033[0m"
        else
            echo -e "\033[36;1mrestart [fial]\033[0m"
        fi
    else
        echo -e "\033[36;1mclamd not running !\033[0m"
    fi
}

status_fun(){
    echo -e "\033[36;1mstatus...\033[0m"

    result=\$(ps aux | grep -v grep | grep "\$clamd_path/scan64/sbin/clamd")
    if [[ \$result =~ "\$clamd_path/scan64/sbin/clamd" ]];then
        echo -e "\033[36;1mclamd is running !\033[0m"
    else
        echo -e "\033[36;1mclamd not running !\033[0m"
    fi
}


case \$1 in
        start)
                start_fun
        ;;
        stop)
                stop_fun
        ;;
        restart)
                restart_fun
        ;;
        status)
                status_fun
        ;;
        *)
                echo "please input start or stop or restart or status !"
                exit
esac
EOF

mkdir -p $TARGET_DIR/scan64
cp -rfv $BASEPATH/clamd /etc/init.d/clamd
chmod 655 /etc/init.d/clamd
cp -rfv $BASEPATH/bin/ $TARGET_DIR/scan64/
chmod 655 $TARGET_DIR/scan64/bin/cloud_scan
cp -rfv $BASEPATH/download $TARGET_DIR/scan64/
cp -rfv $BASEPATH/cloud $TARGET_DIR/scan64/
cp -rfv $BASEPATH/etc $TARGET_DIR/scan64/
cp -rfv $BASEPATH/lib $TARGET_DIR/scan64/
cp -rfv $BASEPATH/lib64 $TARGET_DIR/scan64/
cp -rfv $BASEPATH/logs $TARGET_DIR/scan64/
cp -rfv $BASEPATH/sbin $TARGET_DIR/scan64/
chmod 655 $TARGET_DIR/scan64/sbin/clamd
cp -rfv $BASEPATH/share $TARGET_DIR/scan64/
cp -rfv $BASEPATH/uninstall $TARGET_DIR/scan64/uninstall
chmod 655 $TARGET_DIR/scan64/uninstall
cp -rfv $BASEPATH/updata $TARGET_DIR/scan64/

if [ -f "$TARGET_DIR/scan64/etc/clamd.conf" ];then
    rm -rf $TARGET_DIR/scan64/etc/clamd.conf
fi

if [ -f "$TARGET_DIR/scan64/etc/freshclam.conf" ];then
    rm -rf $TARGET_DIR/scan64/etc/freshclam.conf
fi

touch $TARGET_DIR/scan64/etc/clamd.conf
touch $TARGET_DIR/scan64/etc/freshclam.conf

echo "LogFile $TARGET_DIR/scan64/logs/clamd.log" >> $TARGET_DIR/scan64/etc/clamd.conf
echo "PidFile $TARGET_DIR/scan64/updata/clamd.pid" >> $TARGET_DIR/scan64/etc/clamd.conf
echo "DatabaseDirectory $TARGET_DIR/scan64/updata" >> $TARGET_DIR/scan64/etc/clamd.conf
echo "LocalSocket /tmp/clamd.socket" >> $TARGET_DIR/scan64/etc/clamd.conf
echo "TCPSocket 3310" >> $TARGET_DIR/scan64/etc/clamd.conf
echo "TCPAddr 127.0.0.1" >> $TARGET_DIR/scan64/etc/clamd.conf
echo "ReadTimeout 300" >> $TARGET_DIR/scan64/etc/clamd.conf

echo "DatabaseDirectory $TARGET_DIR/scan64/updata" >> $TARGET_DIR/scan64/etc/freshclam.conf

rpm_result=$(rpm -qa | grep zip)
if [[ $rpm_result == "" ]];then
        yum install zip -y
    if [ $? -ne 0 ];then
            echo "Install zip error"
            exit
        fi
fi

rpm_result=$(rpm -qa | grep unzip)
if [[ $rpm_result == "" ]];then
        yum install unzip -y
    if [ $? -ne 0 ];then
            echo "Install unzip error"
            exit
        fi
fi

chkconfig --add clamd
chkconfig --level 2346 clamd on

service clamd start

if [ $? -ne 0 ];then
    echo "clamd start error."
fi

echo "clamd starting ok"

exit 0
 

你可能感兴趣的:(Shell)