由于经常在FreeBSD下管理ftp用户,比如添加、修改、删除之类的,操作也就那几步,但是经常操作就显得麻烦了,所以就写了这么一个简单的管理脚本。不妥之处望批评指教,操作很简单
添加用户:./add_ftp_user.sh -a username:password user_ftp_path
修改用户:./add_ftp_user.sh -e username:password user_ftp_path
删除用户:./add_ftp_user.sh -d username
FreeBSD下源码安装Vsftpd配置虚拟用户,可参考:FreeBSD下源码安装Vsftpd配置虚拟用户 使用此脚本需要修改perl脚本如下:
- #! /usr/bin/perl -w
- #filename: ftp_user.pl
- use strict;
- #
- if ($ARGV[0]) {
- $_ = $ARGV[0];
- exit if ($_ =~/^\n/);
- chomp;
- (my $user, my $pass) = split /:/, $_, 2;
- my $crypt = crypt $pass, '$1$' . gensalt(8);
- print "$user:$crypt\n";
- }
- sub gensalt {
- my $count = shift;
- my @salt = ('.', '/', 0 .. 9, 'A' .. 'Z', 'a' .. 'z');
- my $s;
- $s .= $salt[rand @salt] for (1 .. $count);
- return $s;
- }
add_ftp_user.sh 代码如下:
- #!/bin/sh
- # author clairelume
- # date 2012.2.2
- # version 1.2 build 20120202
- COLOR_CYAN="\033[36;49;1m"
- COLOR_GREEN="\033[32;49;1m"
- COLOR_RED="\033[31;49;1m"
- COLOR_BACK="\033[39;49;0m"
- if [ $1 ]; then
- if [ $1 = "-d" ]; then
- sed -i "" "/^$2:/d" /data/soft/vsftpd/login
- sed -i "" "/^$2$/d" /data/soft/vsftpd/allow
- sed -i "" "/^$2$/d" /data/soft/vsftpd/chroot_list
- if [ -f /data/soft/vsftpd/user_conf/$2 ]; then
- /bin/rm -rf /data/soft/vsftpd/user_conf/$2
- echo -e "$COLOR_GREEN User $2 delete successfully!$COLOR_BACK"
- else
- echo -e "$COLOR_RED User delete failure! No such user!$COLOR_BACK"
- fi
- elif [ $1 = "-a" ]; then
- if [ $2 ] && [ $3 ]; then
- if [ `echo $2 | awk '{if(/[:]/) print $0}'` ]; then
- if [ -f /usr/bin/perl ];then
- if [ -d $3 ];then
- if [ ! -f /data/soft/vsftpd/user_conf/`echo $2 | awk -F ':' '{print $1}'` ]; then
- echo `/data/soft/vsftpd/bin/ftp_user.pl $2` >> /data/soft/vsftpd/login
- echo `/data/soft/vsftpd/bin/ftp_user.pl $2 | awk -F ':' '{print $1}'` >>/data/soft/vsftpd/allow
- echo `/data/soft/vsftpd/bin/ftp_user.pl $2 | awk -F ':' '{print $1}'` >>/data/soft/vsftpd/chroot_list
- echo "local_root=$3" >>/data/soft/vsftpd/user_conf/`/data/soft/vsftpd/bin/ftp_user.pl $2 | awk -F ':' '{print $1}'`
- echo "write_enable=YES" >>/data/soft/vsftpd/user_conf/`/data/soft/vsftpd/bin/ftp_user.pl $2 | awk -F ':' '{print $1}'`
- echo "local_umask=022" >>/data/soft/vsftpd/user_conf/`/data/soft/vsftpd/bin/ftp_user.pl $2 | awk -F ':' '{print $1}'`
- echo -e "$COLOR_GREEN Adding user `echo $2 | awk -F ':' '{print $1}'` successfully!$COLOR_BACK"
- else
- echo -e "$COLOR_RED User already exists!$COLOR_BACK"
- fi
- else
- echo -e "$COLOR_RED Path input error!$COLOR_BACK"
- fi
- else
- echo -e "$COLOR_RED Perl is not installed!$COLOR_BACK"
- fi
- else
- echo -e "$COLOR_RED Input is not formatted correctly!$COLOR_BACK"
- echo -e "$COLOR_RED Example: username:password$COLOR_BACK"
- fi
- else
- echo -e "$COLOR_RED Input is not formatted correctly!$COLOR_BACK"
- echo -e "$COLOR_RED Options:$COLOR_BACK"
- echo -e "$COLOR_RED -a : Add a ftp user!$COLOR_BACK $COLOR_CYAN Example:\"./add_ftp_user.sh -a username:password /data/www/ftp\"$COLOR_BACK"
- echo -e "$COLOR_RED -d : Delete a ftp user!$COLOR_BACK $COLOR_CYAN Example:\"./add_ftp_user.sh -d username\"$COLOR_BACK"
- echo -e "$COLOR_RED -e : Modify a ftp user information!$COLOR_BACK $COLOR_CYAN Example:\"./add_ftp_user.sh -e username:password /data/www/ftp\"$COLOR_BACK"
- fi
- elif [ $1 = "-e" ]; then
- if [ $2 ] && [ $3 ]; then
- if [ `echo $2 | awk '{if(/[:]/) print $0}'` ]; then
- if [ -f /usr/bin/perl ];then
- if [ -d $3 ];then
- if [ -f /data/soft/vsftpd/user_conf/`echo $2 | awk -F ':' '{print $1}'` ]; then
- USERNAME=`echo $2 | awk -F ':' '{print $1}'`
- OLDUSERNAME=`grep ^${USERNAME}: /data/soft/vsftpd/login`
- NEWUSERNAME=`/data/soft/vsftpd/bin/ftp_user.pl $2`
- USERPATH=`grep "local_root" /data/soft/vsftpd/user_conf/$USERNAME`
- sed -i "" "s#${OLDUSERNAME}#${NEWUSERNAME}#" /data/soft/vsftpd/login
- if [ `echo $USERPATH | awk -F '=' '{print $2}'` = $3 ]; then
- echo -e "$COLOR_GREEN User $USERNAME successfully updated!$COLOR_BACK"
- echo -e "$COLOR_CYAN The same as the $USERNAME user path!$COLOR_BACK"
- else
- sed -i "" "s#${USERPATH}#local_root=${3}#" /data/soft/vsftpd/user_conf/$USERNAME
- echo -e "$COLOR_GREEN User $USERNAME successfully updated!$COLOR_BACK"
- fi
- fi
- else
- echo -e "$COLOR_RED Path input error!$COLOR_BACK"
- fi
- else
- echo -e "$COLOR_RED Perl is not installed!$COLOR_BACK"
- fi
- else
- echo -e "$COLOR_RED Input is not formatted correctly!$COLOR_BACK"
- echo -e "$COLOR_RED Example: username:password$COLOR_BACK"
- fi
- else
- echo -e "$COLOR_RED Input is not formatted correctly!$COLOR_BACK"
- echo -e "$COLOR_RED Options:$COLOR_BACK"
- echo -e "$COLOR_RED -a : Add a ftp user!$COLOR_BACK $COLOR_CYAN Example:\"./add_ftp_user.sh -a username:password /data/www/ftp\"$COLOR_BACK"
- echo -e "$COLOR_RED -d : Delete a ftp user!$COLOR_BACK $COLOR_CYAN Example:\"./add_ftp_user.sh -d username\"$COLOR_BACK"
- echo -e "$COLOR_RED -e : Modify a ftp user information!$COLOR_BACK $COLOR_CYAN Example:\"./add_ftp_user.sh -e username:password /data/www/ftp\"$COLOR_BACK"
- fi
- else
- echo -e "$COLOR_RED Input is not formatted correctly!$COLOR_BACK"
- echo -e "$COLOR_RED Options:$COLOR_BACK"
- echo -e "$COLOR_RED -a : Add a ftp user!$COLOR_BACK $COLOR_CYAN Example:\"./add_ftp_user.sh -a username:password /data/www/ftp\"$COLOR_BACK"
- echo -e "$COLOR_RED -d : Delete a ftp user!$COLOR_BACK $COLOR_CYAN Example:\"./add_ftp_user.sh -d username\"$COLOR_BACK"
- echo -e "$COLOR_RED -e : Modify a ftp user information!$COLOR_BACK $COLOR_CYAN Example:\"./add_ftp_user.sh -e username:password /data/www/ftp\"$COLOR_BACK"
- fi
- else
- echo -e "$COLOR_RED Input is not formatted correctly!$COLOR_BACK"
- echo -e "$COLOR_RED Options:$COLOR_BACK"
- echo -e "$COLOR_RED -a : Add a ftp user!$COLOR_BACK $COLOR_CYAN Example:\"./add_ftp_user.sh -a username:password /data/www/ftp\"$COLOR_BACK"
- echo -e "$COLOR_RED -d : Delete a ftp user!$COLOR_BACK $COLOR_CYAN Example:\"./add_ftp_user.sh -d username\"$COLOR_BACK"
- echo -e "$COLOR_RED -e : Modify a ftp user information!$COLOR_BACK $COLOR_CYAN Example:\"./add_ftp_user.sh -e username:password /data/www/ftp\"$COLOR_BACK"
- fi
如非注明则为本站原创文章,欢迎转载。转载请注明转载自:moon's blog
看着这些东西,我觉得你很不错
这是什么东东呢
路过支持下~1
会linux脚本很简单哦 哎我还是个linux系统工程师呢