1. <tr id='p1j4j'><strong id='p1j4j'></strong><small id='p1j4j'></small><button id='p1j4j'></button><li id='p1j4j'><noscript id='p1j4j'><big id='p1j4j'></big><dt id='p1j4j'></dt></noscript></li></tr><ol id='p1j4j'><table id='p1j4j'><blockquote id='p1j4j'><tbody id='p1j4j'></tbody></blockquote></table></ol><u id='p1j4j'></u><kbd id='p1j4j'><kbd id='p1j4j'></kbd></kbd>
  2. <ins id='p1j4j'></ins><span id='p1j4j'></span>

        <acronym id='p1j4j'><em id='p1j4j'></em><td id='p1j4j'><div id='p1j4j'></div></td></acronym><address id='p1j4j'><big id='p1j4j'><big id='p1j4j'></big><legend id='p1j4j'></legend></big></address>
        <dl id='p1j4j'></dl>
        <i id='p1j4j'><div id='p1j4j'><ins id='p1j4j'></ins></div></i>

          <fieldset id='p1j4j'></fieldset>

          <i id='p1j4j'></i>

          <code id='p1j4j'><strong id='p1j4j'></strong></code>

          Linux环境下wu-ftp服务管理脚本详解

          • 时间:
          • 浏览:7
          • 来源:124软件资讯网

            一、testftp_server.sh

            1、用法:

            Usage:

            ./testftp_server.sh {start|stop|restart|status|userconf|mini|limit|loginfails|view|access|message|guest|denyuser|denyhost}

            2、参数说明:

            start:

            改变设置文件  ,并启动FTP服务器;下一次系统启动时  ,会自动启动该服务  。

            stop:

            改变设置文件 ,并制止FTP服务器;下一次系统启动时  ,不自动启动该服务  。

            restart:

            重新启动FTP服务器  。

            status:

            检察FTP服务器的运行状态(运行或制止)  。

            userconf:

            为系统添加FTP用户  ,详细用法为:

            ./testftp_server.sh userconf username

            新添加的用户继续超级用户的密码  。

            mini:

            最小化FTP服务器的设置文件  ,只留下FTP服务器正常运行所必须的设置项  。

            limit:

            设置FTP服务器限制的各种用户的最大在线数目  ,详细用法为:

            ./testftp_server.sh limit user_count times

            user_count---为最大在线数目 ,剧本会凭据FTP服务器的设置文件自动处置惩罚某类用户 。

            times---times中的字符串用逗号离隔  ,每一个字串表现一天  。星期一到星期日划分用Mo、Tu、We、Th、Fr、Sa和Su表现  ,周末也可以用Wk表现  。表现时间的小时和分钟之间不要用冒号离隔  。“-”用来表现规模  。

            loginfails:

            设置用户最大的登录失败次数  ,详细用法为:

            ./testftp_server.sh loginfails failed_counts

            failed_counts---为用户最大的登录失败次数 。

            view:

            检察FTP服务器的主设置文件的内容 。

            access:

            设置FTP用户的存取权限 ,详细请检察使用剧本该功效的输出信息  。

            message:

            设置FTP服务器显示的信息 。

            guest:

            设置作为guest看待的用户  ,详细用法为:

            ./testftp_server.sh guest username

            denyuser:

            设置哪些用户不能登录FTP服务器  ,可以删除或者添加用户  ,用法:

            ./testftp_server.sh denyuser del/add username

            del/add---指明是从拒绝的用户列表中删除用户照旧添加用户到拒绝的用户列表中 。

            denyhost:

            指明哪些用户可以从哪些地址或拒绝哪些用户可以从哪些地址会见FTP服务器  ,用法:

            ./testftp_server.sh denyhost add/del allow/deny username hostname

            add---为添加一条规则到设置文件;若是用户名和主机名相同  ,则以为是统一条规则;

            del---为从设置文件删除一条规则;若是用户名和主机名相同  ,则以为是统一条规则;

            allow / deny---指明允许照旧拒绝  。

            username---为欲对其执行该规则的用户;

            hostname---为主机名
            二、testftp_client.sh

            客户端剧本只测试服务器端的limit选项  ,即最大在线用户限制  。用法:

            ./testftp_client.sh conn_count username password hostname

            其中:

            conn_count:

            与FTP服务器建设毗连的数目  ,应该比FTP服务器的限制数目大;

            username:

            登录FTP服务器的用户名;

            password:

            登录FTP服务器的用户密码;

            hostname:

            FTP服务器的主机名或IP地址

            FTP服务器的主机名或IP地址 。

            --------------------------test_server.sh------------------------

            #!/bin/bash
            . /etc/rc.d/init.d/functions

            test -f /etc/ftpaccess
            if [ $? -ne 0 ] ; then
            echo -e " \007FTP Server congif file--/etc/ftpaccess not found !"
            echo " Please check the installion of the FTP Server !"
            exit 1
            else
            arg_count=$#
            fi

            class_defined(){

            echo "Please run {GetProperty(Content)} mini or {GetProperty(Content)} mini real/aonoymous address first!"
            exit 1
            fi
            }
            start() {
            if [ -f /etc/xinetd.d/wu-ftpd ] ; then
            grep -v -E "disable|\}" /etc/xinetd.d/wu-ftpd >/etc/xinetd.d/wu-ftpd.tmp
            echo -e "\tdisable\t\t\t= no\n}" >> /etc/xinetd.d/wu-ftpd.tmp
            mv -f /etc/xinetd.d/wu-ftpd.tmp /etc/xinetd.d/wu-ftpd
            /etc/rc.d/init.d/xinetd restart > /dev/null 2>&1
            #Check Result
            if [ `/usr/bin/nmap -p21-21 localhost |grep -c ftp` -eq 1 ] ; then
            echo "Start FTP SERVER Succeed!"
            else
            echo "Start FTP SERVER Failed!"
            fi
            fi
            }

            stop() {
            if [ -f /etc/xinetd.d/wu-ftpd ] ; then
            grep -v -E "disable|\}" /etc/xinetd.d/
            wu-ftpd >/etc/xinetd.d/wu-ftpd.tmp
            echo -e "\tdisable\t\t\t= yes\n}" >> /
            etc/xinetd.d/wu-ftpd.tmp
            mv -f /etc/xinetd.d/wu-ftpd.tmp /etc/xinetd.d/wu-ftpd
            /etc/rc.d/init.d/xinetd restart > /dev/null 2>&1
            #Check Result
            if [ `/usr/bin/nmap -p21-21 localhost |grep -c ftp` -eq 0 ] ; then
            echo "Stop FTP SERVER Succeed!"
            else
            echo "Stop FTP SERVER Failed!"
            fi
            fi
            }

            echo "FTP SERVER is running!"
            else
            echo "FTP SERVER stoped!"
            fi
            }

            userconf(){
            if [ -d /home/ftp/ ] ; then
            echo "The directory /home/ftp/ does exist"
            else
            mkdir /home/ftp/
            fi

            if [ `grep -c ^$username /etc/passwd` -ne 1 ] ; then
            useradd -d /home/ftp/$username -s /dev/null $username
            echo "User $username added"
            grep -v ^$username /etc/shadow > /etc/shadow.tmp
            echo "$username:`grep ^root /etc/shadow |cut -f 2-9 -d :`" >>
            /etc/shadow.tmp
            mv -f /etc/shadow.tmp /etc/shadow
            echo "User $username password is root's password"
            fi

            grep -v ^$username /etc/passwd > /etc/passwd.tmp
            echo "`grep ^$username /etc/passwd |cut -f 1-5
            -d :`:/home/ftp/./$username/:/dev/null" >> /etc/passwd.tmp
            mv -f /etc/passwd.tmp /etc/passwd
            echo "Config User $username shells succeed"
            if [ `grep -c null /etc/shells` -ne 1 ] ; then
            echo -e "/dev/null" >> /etc/shells
            echo " System Shell /dev/null added"
            fi

            if [ -d /home/ftp/dev/ ] ; then
            echo "The directory /home/ftp/dev/ does exist"
            else
            mkdir /home/ftp/dev
            echo "Create directory /home/ftp/dev succeed"
            fi

            if [ -d /home/ftp/etc/ ] ; then
            echo "The directory /home/ftp/etc/ does exist"

            echo "Create directory /home/ftp/etc succeed"
            fi

            if [ -d /home/ftp/bin/ ] ; then
            echo "The directory /home/ftp/bin/ does exist"
            else
            mkdir /home/ftp/bin
            echo "Create directory /home/ftp/bin succeed"
            fi

            if [ -d /home/ftp/lib/ ] ; then
            echo "The directory /home/ftp/lib/ does exist"
            else
            mkdir /home/ftp/lib
            echo "Create directory /home/ftp/lib succeed"
            fi

            chmod 0511 /home/ftp/dev/ /home/ftp/etc/ /home/ftp/bin/ /home/ftp/lib/ -R

            if [ -c /home/ftp/dev/null ] ; then
            echo "The directory /home/ftp/dev/null does exist"
            else
            mknod /home/ftp/dev/null c 1 3
            chmod 666 /home/ftp/dev/null
            echo "The nod /home/ftp/dev/null added"
            fi

            if [ -f /home/ftp/etc/passwd ] ; then
            :
            else
            echo "`grep ^root /etc/passwd`" > /home/ftp/etc/passwd
            echo "`grep ^$username /etc/passwd`" >> /home/ftp/etc/passwd
            echo "/home/ftp/etc/passwd config succeed"
            fi

            if [ -f /home/ftp/etc/group ] ; then
            :
            else
            echo "`grep ^root /etc/group`" > /home/ftp/etc/group
            echo "`grep ^$username /etc/group`" >> /home/ftp/etc/group
            echo "/home/ftp/etc/group config succeed"
            fi
            }

            mini(){
            if [ $arg_count -eq 1 ] ; then
            if [ -f /etc/ftpaccess.bak ] ; then
            grep ^class /etc/ftpaccess.bak > /etc/ftpaccess
            echo "Mini Config File ready,now,run ftpclient.sh from client!"

            grep ^class /etc/ftpaccess.bak > /etc/ftpaccess
            echo "Mini Config File ready,now,run ftpclient
            .sh from client!"
            fi
            elif [ $arg_count -eq 3 ] ; then
            echo -e "class\t$arg_type\t$arg_type\t$arg_addr" > /etc/ftpaccess
            echo "Only $arg_type user from $arg_addr be allowed to use the FTP Server"
            else
            echo -e $"\007Usage:\t{GetProperty(Content)} mini or {GetProperty(Content)} mini real/aonoymous address"
            echo -e "\tUse \* or \"*\" or '*' to replace Any address"
            fi
            }
            limit(){
            class_defined
            if [ $arg_count -ne 3 ] ; then
            echo -e "\007Usage:\t\n{GetProperty(Content)} limit user_count times"
            echo -e "\tuser_count --- MAX online users at the same time\n"
            echo -e "\ttimes --- during the period of online users limited"
            echo -e "\tMo --- Monday"
            echo -e "\tTu --- Tuesday"
            echo -e "\tWe --- Wednesday"
            echo -e "\tTh --- Thursday"
            echo -e "\tFr --- Friday"
            echo -e "\tSa --- Saturday"
            echo -e "\tSu --- Sunday"
            echo -e "\tWk --- Weekend"
            echo -e "\t0000-1800 --- from 00:00 to 18:00"
            echo -e "\tMoTuWe --- Monday,Tuesday and Wednesday"
            else
            grep -v ^limit /etc/ftpaccess |grep -v ^$ > /etc/ftpaccess.tmp
            mv -f /etc/ftpaccess.tmp /etc/ftpaccess
            echo -e "limit\t$arg_class\t$arg_user_count\t$times\t/home/ftp/.
            too_many.$arg_class" >> /etc/ftpaccess
            echo -e "\nMore than $arg_user_count ($arg_class class) users online."
            > /home/ftp/.too_many.$arg_class
            echo -e "\nPlease try a later!" >> /home/ftp/.too_many.$arg_class
            echo " Online $arg_class user limited to $arg_user_count at $times!"
            fi
            }

            loginfails(){
            class_defined
            if [ `grep -c ^loginfails /etc/ftpaccess` -eq 1 ] ; then
            grep -v ^loginfails /etc/ftpaccess > /etc/ftpaccess.tmp
            mv -f /etc/ftpaccess.tmp /etc/ftpaccess
            fi
            if [ $arg_count -ne 2 ] ; then
            echo -e "\007Usage:\t{GetProperty(Content)} loginfails failed_counts"

            e "loginfails\t$failed_count" >> /etc/ftpaccess
            echo "loginfails count limited to $failed_count !"
            fi
            }
            view(){
            echo -e "\n* * * * * /etc/ftpaccess * * * * *\n "
            cat /etc/ftpaccess
            echo -e "\n* * * * * /etc/ftpusers * * * * *\n "
            cat /etc/ftpusers
            echo -e "\n* * * * * /etc/ftphosts * * * * *\n "
            cat /etc/ftphosts
            # echo -e "\n****/etc/ftpgroups****\n "
            # cat /etc/ftpgroups
            # echo -e "\n****/etc/ftpconversions****\n "
            # cat /etc/ftpconversions
            }
            access(){
            class_defined
            if [ `grep -c ^guestgroup /etc/ftpaccess` -lt 1 ] ; then
            echo -e "\007\nGuestgroup define not found! please
            run {GetProperty(Content)} guest username first !"
            exit 1
            fi

            if [ `grep -c ^upload /etc/ftpaccess` -ne 0 ] ; then
            grep -v ^upload /etc/ftpaccess > /etc/ftpaccess.tmp
            mv -f /etc/ftpaccess.tmp /etc/ftpaccess
            fi
            if [ -d /home/ftp/upload ] ;then
            echo "Directory /home/ftp/upload exist !"
            else
            mkdir /home/ftp/upload
            chmod a+w /home/ftp/upload
            echo "Directory /home/ftp/upload for user to upload files redeay !"
            fi
            echo -e "\nupload\t/home/ftp/*\t/\tno" >> /etc/ftpaccess
            echo -e "upload\t/home/ftp/*\t/etc\tno" >> /etc/ftpaccess
            echo -e "upload\t/home/ftp/*\t/dev\tno"\n >> /etc/ftpaccess
            echo -e "\nupload\t/home/ftp\t/upload\tyes\troot\tftpadmin\t0600\
            tnodirs\n" >> /etc/ftpaccess
            echo "You can upload files only to directory /upload !"
            grep -v ^chmod /etc/ftpaccess |grep -v ^delete |grep -v ^rename |
            grep -v ^overwrite > /etc/ftpaccess.tmp
            mv -f /etc/ftpaccess.tmp /etc/ftpaccess
            echo -e "\nchmod\t\tno\tguest,anonymous" >> /etc/ftpaccess
            echo -e "delete\t\tno\tanonymous" >> /etc/ftpaccess
            echo -e "overwrite\tno\tanonymous" >> /etc/ftpaccess
            echo -e "rename\t\tno\tanonymous" >> /etc/ftpaccess

            e "rename\t\tyes\treal\n" >> /etc/ftpaccess
            grep -v ^noretrieve /etc/ftpaccess > /etc/ftpaccess.tmp
            mv -f /etc/ftpaccess.tmp /etc/ftpaccess
            echo -e "\nnoretrieve\t/home/ftp/upload" >> /etc/ftpaccess
            # echo -e "noretrieve\t/home/ftp/dev" >> /etc/ftpaccess
            # echo -e "noretrieve\t/home/ftp/lib" >> /etc/ftpaccess
            # echo -e "noretrieve\t/home/ftp/bin\n" >> /etc/ftpaccess
            echo "You couldn't download files from directory /home/ftp/upload !"
            grep -v ^guest-root /etc/ftpaccess |grep -v ^restricted-gid |grep -v
            ^restricted-uid > /etc/ftpaccess.tmp
            mv -f /etc/ftpaccess.tmp /etc/ftpaccess
            echo -e "\nguest-root\t/home/ftp\tftpadmin" >> /etc/ftpaccess
            echo -e "restricted-uid\tftpadmin" >>/etc/ftpaccess
            echo -e "restricted-gid\tftpadmin\n" >>/etc/ftpaccess
            }

            message(){
            class_defined
            grep -v ^message /etc/ftpaccess |grep -v ^readme |grep -v ^greeting
            >/etc/ftpaccess.tmp
            mv -f /etc/ftpaccess.tmp /etc/ftpaccess
            echo -e "\nThis is MESSAGE TEST ,if you see the information ,
            congratulations !\n" >/home/ftp/.welcome.msg
            echo -e "\nmessage\t/home/ftp/.welcome.msg\tLOGIN" >> /etc/ftpaccess
            echo -e "\nThis is README TEST ,if you see the information ,congratulations
            !\n" > /home/ftp/README.txt
            echo -e "readme\treadme\tREADME*\tlogin" >> /etc/ftpaccess
            echo -e "readme\tREADME*\tcwd=*" >> /etc/ftpaccess
            echo -e "greeting\tterse\n" >> /etc/ftpaccess
            echo -e "Only \"FTP server ready\" echo when connected !"
            }

            security(){
            class_defined
            grep -v commands /etc/ftpaccess |grep -v transfers |grep -v security
            |grep -v ^passwd_check > /etc/ftpaccess.tmp
            mv -f /etc/ftpaccess.tmp /etc/ftpaccess
            echo -e "\nlog\tcommands\treal,guest" >> /etc/ftpaccess
            echo -e "log\ttransfers\treal,guest\tinbound,outbound" >> /etc/ftpaccess
            echo "Commands used by real users and guest users loged to /var/log/message !"
            echo -e "passwd-check\trfc822\tenforce" >> /etc/ftpaccess
            echo "If the password isn't the rfc822 email address,you will not login in !"

            }
            guest(){
            class_defined
            if [ $arg_count -ne 2 ] ; then
            echo -e "\007\nUsage: {GetProperty(Content)} guest username !\n"
            exit 1
            fi
            if [ `grep -c ^$username /etc/passwd` -lt 1 ] ; then
            echo -e "\007The user $username does not exist.\nPlease run {GetProperty(Content)} userconf first !"
            exit 1
            fi
            if [ `grep ^guestgroup /etc/ftpaccess |grep -c $username` -ge 1 ] ; then
            echo -e "\007\nUser $username does exist in guestgroup !\nTry another user"
            else
            echo -e "\nguestgroup\t$username" >> /etc/ftpaccess
            echo -e "User $username added to guestgroup !"
            fi
            }
            denyuser(){
            if [ $arg_count -ne 3 ] ; then
            echo -e "\n\007Usage: {GetProperty(Content)} denyuser add/del username !\n"
            exit 1
            fi
            if [ -f /etc/ftpusers ] ; then
            echo -e "\nDeny-userlist file ready !"
            else
            echo "Deny-userlist file not found !"
            touch /etc/ftpusers
            chmod 0600 /etc/ftpusers
            echo "Create it(/etc/ftpusers) succeed !"
            fi
            if [ `grep -c ^$username /etc/passwd` -lt 1 ] ; then
            echo -e "\007\nThe user $username does not exist.
            \nPlease run {GetProperty(Content)} userconf first !"
            exit 1
            fi
            case "$action" in
            add)
            if [ `grep -c ^$username /etc/ftpusers` -ge 1 ] ; then
            echo -e "\007\nUser $username does exist in deny-userlist
            !\nTry another user"
            else
            echo "$username" >> /etc/ftpusers
            echo -e "User $username added to deny-userlist !"
            fi
            ;;
            del)

            v ^$username /etc/ftpusers > /etc/ftpusers.tmp
            mv -f /etc/ftpusers.tmp /etc/ftpusers
            echo "User $username deleted from deny-userlist !"
            ;;
            *)
            echo -e "\007Usage: {GetProperty(Content)} denyuser \"add/del\" username"
            ;;
            esac
            }

            denyhost(){
            if [ $arg_count -ne 5 ] ; then
            echo -e "\007\nUsage: {GetProperty(Content)} denyhost add/del allow/deny
            username hostname !\n"
            exit 1
            fi
            if [ -f /etc/ftphosts ] ; then
            echo -e "\nDeny-hostlist file ready !"
            else
            echo "Deny-hostlist file not found !"
            touch /etc/ftphosts
            chmod 0600 /etc/ftphosts
            echo "Create it(/etc/ftphosts) succeed !"
            fi

            case "$action" in
            add)
            if [ `grep -w $hostname /etc/ftphosts | grep -w -c $username`
            -ge 1 ] ; then
            echo -e "\007\nDeny-rule \"$rule $username
            $hostname\" does exist in deny-hostlist!\nTry another rule"
            else
            echo -e "$rule\t$username\t$hostname" >> /
            etc/ftphosts
            echo -e "Deny-rule \"$rule $username $hostname\"
            added to deny-hostlist !"
            fi
            ;;
            del)
            if [ `grep $hostname /etc/ftphosts |grep -c $username` -lt 1 ] ; then
            echo -e "\007\nDeny-rule \"$rule $username
            $hostname\" does not exist in deny-hostlist!\nTry another rule"

            v $username /etc/ftphosts > /etc/ftphosts.tmp
            grep -w $username /etc/ftphosts |grep -v $hostname$ >> /etc/ftphosts.tmp
            mv /etc/ftphosts.tmp /etc/ftphosts
            echo -e "\nDeny-reul \"$rule $username $hostname\
            " deleted from deny-hostlist !"
            fi
            ;;
            *)
            echo -e "\007\nUsage: {GetProperty(Content)} denyhost add/del
            allow/deny username hostname !\n"
            ;;
            esac
            }


            case "{GetProperty(Content)}" in
            start)
            start
            ;;
            stop)
            stop
            ;;
            status)
            status
            ;;
            restart)
            stop
            start
            ;;
            userconf)
            if [ $arg_count -lt 2 ] ; then
            echo -e $"\007Usage: {GetProperty(Content)} userconf username"
            exit 1
            fi
            username=$2
            userconf
            ;;
            mini)
            arg_type=$2
            arg_addr=$3
            mini
            ;;
            limit)
            arg_class=`grep ^class /etc/ftpaccess |tr
            -s "[ ]" |cut -f 2 -d " "|cut -f 2`
            arg_user_count=$2
            times=$3
            limit
            ;;
            loginfails)
            failed_count=$2
            loginfails
            ;;
            view)
            view
            ;;
            access)
            access
            ;;
            message)
            message
            ;;
            guest)
            username=$2
            guest
            ;;
            denyuser)
            action=$2
            username=$3
            denyuser
            ;;
            denyhost)
            if [ $arg_count -ne 5 ] ; then
            echo -e "\007\nUsage: {GetProperty(Content)} denyhost add/del
            allow/deny username hostname !\n"
            exit 1
            fi
            action=$2
            rule=$3
            username=$4
            hostname=$5
            denyhost
            ;;
            *)
            echo -e $"\007Usage:\n\t{GetProperty(Content)} {start|stop|restart|status|
            userconf|mini|limit|loginfails\n\t\t\t
            |view|access|message|guest|denyuser|denyhost}"
            exit 1
            esac

            -------------------------------test_client.sh--------------------------

            #!/bin/sh

            flags=1
            conn_count={GetProperty(Content)}
            username=$2
            password=$3
            hostname=$4

            usage()
            {
            echo -e "\007Usage:"
            echo "`basename {GetProperty(Content)}` conn_count username
            password hostname"
            echo
            exit 1
            }


            if [ $# -lt 4 ]
            then
            usage
            fi

            if [ `/usr/bin/nmap -p21-21 localhost
            |grep -c ftp` -ne 1 ] ; then

            echo -e "\007\nFTP SERVER stoped!"
            fi

            killall -9 nc 2>/dev/null
            echo -e "\tF T P E C H O" > /tmp/ftpecho

            while [ $flags -le $conn_count ]
            do
            echo -e "USER $username\nPASS $password\n" |
            nc $hostname 21 > /tmp/ftpecho &
            sleep 1
            if [ `grep -c "530-Please-try-a-later!" /
            tmp/ftpecho` -eq 1 ] ; then
            echo -e "\007\n\t`expr $flags - 1` online users
            limit reached, Please try a later !\n"
            break
            fi
            echo -e "\n\t$flags FTP Connection Completed!"
            flags=`expr $flags + 1`
            done


            ----------------------------autotelnet.sh-----------------------------

            #!/usr/bin/expect -f
            # wrapper to make passwd(1) be non-interactive
            # username is passed as 1st arg, passwd as 2nd

            set machine [lindex $argv 0]
            set user [lindex $argv 1]
            set password [lindex $argv 2]
            #set send_human {.2 .4 1 .5 2}
            #exec adduser $user
            spawn telnet $machine
            expect "login:"
            #exec sleep 1
            send "$user\r"
            expect "Password:"
            #exec sleep 1
            send "$password\r"
            #exec sleep 1
            send "exit\r"
            expect eof