vsftpdのFTPアカウントをさくっと追加するスクリプト

add_ftp_user.sh

#!/bin/sh
IFS=$'\n'
SCRIPT_PATH=`echo $(cd $(dirname $0);pwd)`

usage_exit() {
        echo "Usage: $0 [-g groupname] username" 1>&2
        exit 1
}

while getopts g:h OPT
do
    case $OPT in
        g)  VALUE_G=$OPTARG
            ;;
        h)  usage_exit
            ;;
        \?) usage_exit
            ;;
    esac
done

shift $((OPTIND - 1))


if [ $# -ne 1 ]; then
  echo "ユーザー名を引数として指定してください。" >&2
  exit 1
fi


if [ -n "${VALUE_G}" ]; then 
   if [  `egrep "^${VALUE_G}:" /etc/group | wc -l` -eq 0 ]; then
     echo "${VALUE_G} というグループは存在しません。" >&2
     exit 1
   fi
fi

USERNAME=$1

if [ `egrep "^${USERNAME}:" /etc/passwd | wc -l` -gt 0 ]; then
  echo "${USERNAME} というユーザーはすでに登録されています。" >&2
  exit 1
fi

PASSWORD=`pwgen -cn 12 1`
useradd ${USERNAME}
echo "${USERNAME}:${PASSWORD}" | chpasswd

if [ -n "${VALUE_G}" ]; then
  usermod -g ${VALUE_G} ${USERNAME}
  cp_template utils/bash_profile "/home/${USERNAME}/.bash_profile"
fi

if [ `egrep "^${USERNAME}$" /etc/vsftpd/user_list | wc -l` -eq 0 ]; then
  echo "${USERNAME}" >> /etc/vsftpd/user_list
fi
service vsftpd restart

echo "FTP ユーザーを追加しました"
echo "ユーザー名: ${USERNAME}"
echo "パスワード: ${PASSWORD}"

使い方

sh add_ftp_user.sh [-g グループ名] ユーザー名