现在的位置: 首页shell>正文
FreeBSD下vsftpd用户管理脚本 [原创]
2012年02月02日 shell 评论数 4 ⁄ 被围观 10,585 次+

由于经常在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脚本如下:

  1. #! /usr/bin/perl -w   
  2. #filename: ftp_user.pl   
  3. use strict;   
  4. #   
  5. if ($ARGV[0]) {   
  6.     $_ = $ARGV[0];   
  7.     exit if ($_ =~/^\n/);   
  8.     chomp;   
  9.     (my $usermy $pass) = split /:/, $_, 2;   
  10.     my $crypt = crypt $pass, '$1$' . gensalt(8);   
  11.     print "$user:$crypt\n";   
  12. }   
  13. sub gensalt {   
  14.     my $count = shift;   
  15.     my @salt = ('.', '/', 0 .. 9, 'A' .. 'Z', 'a' .. 'z');   
  16.     my $s;   
  17.     $s .= $salt[rand @saltfor (1 .. $count);   
  18.     return $s;   
  19. }  

add_ftp_user.sh 代码如下:

  1. #!/bin/sh   
  2. # author    clairelume   
  3. # date  2012.2.2  
  4. # version 1.2 build 20120202  
  5.   
  6. COLOR_CYAN="\033[36;49;1m"  
  7. COLOR_GREEN="\033[32;49;1m"  
  8. COLOR_RED="\033[31;49;1m"  
  9. COLOR_BACK="\033[39;49;0m"  
  10.   
  11. if [ $1 ]; then   
  12.     if [ $1 = "-d" ]; then   
  13.         sed -i "" "/^$2:/d" /data/soft/vsftpd/login   
  14.         sed -i "" "/^$2$/d" /data/soft/vsftpd/allow   
  15.         sed -i "" "/^$2$/d" /data/soft/vsftpd/chroot_list   
  16.         if [ -f /data/soft/vsftpd/user_conf/$2 ]; then   
  17.             /bin/rm -rf /data/soft/vsftpd/user_conf/$2  
  18.             echo -e "$COLOR_GREEN User $2 delete successfully!$COLOR_BACK"  
  19.         else  
  20.             echo -e "$COLOR_RED User delete failure! No such user!$COLOR_BACK"  
  21.         fi   
  22.     elif [ $1 = "-a" ]; then   
  23.         if [ $2 ] && [ $3 ]; then   
  24.             if [ `echo $2 | awk '{if(/[:]/) print $0}'` ]; then   
  25.                 if [ -f /usr/bin/perl ];then   
  26.                     if [ -d $3 ];then   
  27.                         if [ ! -f /data/soft/vsftpd/user_conf/`echo $2 | awk -F ':' '{print $1}'` ]; then   
  28.                             echo `/data/soft/vsftpd/bin/ftp_user.pl $2` >> /data/soft/vsftpd/login   
  29.                             echo `/data/soft/vsftpd/bin/ftp_user.pl $2 | awk -F ':' '{print $1}'` >>/data/soft/vsftpd/allow   
  30.                             echo `/data/soft/vsftpd/bin/ftp_user.pl $2 | awk -F ':' '{print $1}'` >>/data/soft/vsftpd/chroot_list   
  31.                             echo "local_root=$3" >>/data/soft/vsftpd/user_conf/`/data/soft/vsftpd/bin/ftp_user.pl $2 | awk -F ':' '{print $1}'`   
  32.                             echo "write_enable=YES" >>/data/soft/vsftpd/user_conf/`/data/soft/vsftpd/bin/ftp_user.pl $2 | awk -F ':' '{print $1}'`   
  33.                             echo "local_umask=022" >>/data/soft/vsftpd/user_conf/`/data/soft/vsftpd/bin/ftp_user.pl $2 | awk -F ':' '{print $1}'`   
  34.                             echo -e "$COLOR_GREEN Adding user `echo $2 | awk -F ':' '{print $1}'` successfully!$COLOR_BACK"  
  35.                         else  
  36.                             echo -e "$COLOR_RED User already exists!$COLOR_BACK"  
  37.                         fi   
  38.                     else  
  39.                         echo -e "$COLOR_RED Path input error!$COLOR_BACK"  
  40.                     fi   
  41.                 else  
  42.                     echo -e "$COLOR_RED Perl is not installed!$COLOR_BACK"  
  43.                 fi   
  44.             else  
  45.                 echo -e "$COLOR_RED Input is not formatted correctly!$COLOR_BACK"  
  46.                 echo -e "$COLOR_RED Example: username:password$COLOR_BACK"  
  47.             fi   
  48.         else  
  49.             echo -e "$COLOR_RED Input is not formatted correctly!$COLOR_BACK"  
  50.             echo -e "$COLOR_RED Options:$COLOR_BACK"  
  51.             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"  
  52.             echo -e "$COLOR_RED -d  : Delete a ftp user!$COLOR_BACK         $COLOR_CYAN Example:\"./add_ftp_user.sh -d username\"$COLOR_BACK"  
  53.             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"  
  54.         fi   
  55.     elif [ $1 = "-e" ]; then   
  56.         if [ $2 ] && [ $3 ]; then   
  57.             if [ `echo $2 | awk '{if(/[:]/) print $0}'` ]; then   
  58.                 if [ -f /usr/bin/perl ];then   
  59.                     if [ -d $3 ];then   
  60.                         if [ -f /data/soft/vsftpd/user_conf/`echo $2 | awk -F ':' '{print $1}'` ]; then   
  61.                             USERNAME=`echo $2 | awk -F ':' '{print $1}'`   
  62.                             OLDUSERNAME=`grep ^${USERNAME}: /data/soft/vsftpd/login`   
  63.                             NEWUSERNAME=`/data/soft/vsftpd/bin/ftp_user.pl $2`   
  64.                             USERPATH=`grep "local_root" /data/soft/vsftpd/user_conf/$USERNAME`   
  65.                             sed -i "" "s#${OLDUSERNAME}#${NEWUSERNAME}#" /data/soft/vsftpd/login   
  66.                             if [ `echo $USERPATH | awk -F '=' '{print $2}'` = $3 ]; then   
  67.                                 echo -e "$COLOR_GREEN User $USERNAME successfully updated!$COLOR_BACK"  
  68.                                 echo -e "$COLOR_CYAN The same as the $USERNAME user path!$COLOR_BACK"  
  69.                             else  
  70.                                 sed -i "" "s#${USERPATH}#local_root=${3}#" /data/soft/vsftpd/user_conf/$USERNAME   
  71.                                 echo -e "$COLOR_GREEN User $USERNAME successfully updated!$COLOR_BACK"  
  72.                             fi   
  73.                         fi   
  74.                     else  
  75.                         echo -e "$COLOR_RED Path input error!$COLOR_BACK"  
  76.                     fi   
  77.                 else  
  78.                     echo -e "$COLOR_RED Perl is not installed!$COLOR_BACK"  
  79.                 fi   
  80.             else  
  81.                 echo -e "$COLOR_RED Input is not formatted correctly!$COLOR_BACK"  
  82.                 echo -e "$COLOR_RED Example: username:password$COLOR_BACK"  
  83.             fi   
  84.         else  
  85.             echo -e "$COLOR_RED Input is not formatted correctly!$COLOR_BACK"  
  86.             echo -e "$COLOR_RED Options:$COLOR_BACK"  
  87.             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"  
  88.             echo -e "$COLOR_RED -d  : Delete a ftp user!$COLOR_BACK         $COLOR_CYAN Example:\"./add_ftp_user.sh -d username\"$COLOR_BACK"  
  89.             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"  
  90.         fi   
  91.   
  92.     else  
  93.         echo -e "$COLOR_RED Input is not formatted correctly!$COLOR_BACK"  
  94.         echo -e "$COLOR_RED Options:$COLOR_BACK"  
  95.         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"  
  96.         echo -e "$COLOR_RED -d  : Delete a ftp user!$COLOR_BACK         $COLOR_CYAN Example:\"./add_ftp_user.sh -d username\"$COLOR_BACK"  
  97.         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"  
  98.     fi   
  99. else  
  100.     echo -e "$COLOR_RED Input is not formatted correctly!$COLOR_BACK"  
  101.     echo -e "$COLOR_RED Options:$COLOR_BACK"  
  102.     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"  
  103.     echo -e "$COLOR_RED -d  : Delete a ftp user!$COLOR_BACK         $COLOR_CYAN Example:\"./add_ftp_user.sh -d username\"$COLOR_BACK"  
  104.     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"  
  105. fi  

本文地址:http://www.92csz.com/23/1043.html
如非注明则为本站原创文章,欢迎转载。转载请注明转载自:moon's blog
 

目前有 4 条留言 其中:访客:4 条, 博主:0 条

  1. 品牌包包 : 2012年02月06日14:31:36  -49楼

    看着这些东西,我觉得你很不错

  2. 货源批发 : 2012年02月08日09:04:20  -48楼

    这是什么东东呢

  3. 憨豆先生 : 2012年02月13日13:55:35  -47楼

    路过支持下~1

  4. 好乐买优惠券 : 2012年02月16日16:49:45  -46楼

    会linux脚本很简单哦 哎我还是个linux系统工程师呢