vsftp管理脚本(CentOS6用)

#!/bin/bash
#
### BEGIN INIT INFO
# Provides: vsftpd
# Required-Start: $local_fs $network $named $remote_fs $syslog
# Required-Stop: $local_fs $network $named $remote_fs $syslog
# Short-Description: Very Secure Ftp Daemon
# Description: vsftpd is a Very Secure FTP daemon. It was written completely from
#              scratch
### END INIT INFO

# vsftpd      This shell script takes care of starting and stopping
#             standalone vsftpd.
#
# chkconfig: - 60 50
# description: Vsftpd is a ftp daemon, which is the program \
#              that answers incoming ftp service requests.
# processname: vsftpd
# config: /etc/vsftpd/vsftpd.conf

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

RETVAL=0
prog="vsftpd"

start() {
        # Start daemons.

    # Check that networking is up.
    [ ${NETWORKING} = "no" ] && exit 1

    [ -x /usr/sbin/vsftpd ] || exit 1

        if [ -d /etc/vsftpd ] ; then
                CONFS=`ls /etc/vsftpd/*.conf 2>/dev/null`
                [ -z "$CONFS" ] && exit 6
                PROC_FAILED=0
                for i in $CONFS; do
                        site=`basename $i .conf`
                        echo -n $"Starting $prog for $site: "
                        daemon /usr/sbin/vsftpd $i
                        RETVAL=$?
                        echo
                        if [ $RETVAL -eq 0 ] && [ ! -f /var/lock/subsys/$prog ]; then
                                touch /var/lock/subsys/$prog
                        elif [ $RETVAL -ne 0 ]; then
                                ps -FC vsftpd | grep "$i" > /dev/null
                                RETVAL=$?
                                if [ $PROC_FAILED -eq 0 ] && [ $RETVAL -ne 0 ]; then
                                        PROC_FAILED=1
                                fi
                        fi
                done
                if [ $RETVAL -eq 0 ] && [ $PROC_FAILED -ne 0 ]; then
                        RETVAL=1
                fi
        else
                RETVAL=1
        fi
        return $RETVAL
}

kill_rest_children() {
    # all vsftpd processes their parent is init
    for chld in `pgrep -P 1 '^vsftpd$'`; do
        if [ -n $chld ]; then
            puid=`ps -p $chld -o uid= | sed s/^\ *//`
            # process UID isn't root - children to kill
            if [ "$puid" != "0" ]; then
                pgrp=`ps -p $chld -o pgrp= | sed s/^\ *//`
                if [ "$pgrp" = "$chld" ]; then
                    # chld is group to kill
                    kill -9 -$chld
                else
                    # chld to kill
                    kill -9 $chld
                fi
            fi
        fi
    done
}

stop() {
        # Stop daemons.
        echo -n $"Shutting down $prog: "
        killproc $prog
        RETVAL=$?
        kill_rest_children
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
        return $RETVAL
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|reload)
        stop
        start
        RETVAL=$?
        ;;
  condrestart|try-restart|force-reload)
        if [ -f /var/lock/subsys/$prog ]; then
            stop
            start
            RETVAL=$?
        fi
        ;;
  status)
        status $prog
        RETVAL=$?
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|try-restart|force-reload|status}"
        exit 1
esac

exit $RETVAL

 

posted on 2017-06-09 21:08  wpjamer  阅读(494)  评论(0编辑  收藏  举报

导航