#!/bin/sh LOGFILE="/var/log/add_vsftpd.log" LOGERR="/var/log/add_vsftpd-error.log" GREP=$(which grep) ECHO=$(which echo) USERADD=$(which useradd) SYSTEMCTL=$(which systemctl 2> /dev/null) CAT=$(which cat) MAILADDR="" FTPUID=3199 FTPUIDMIN=3150 ERROR=0 #Check OS Version function f_checkOS () { OS=$($GREP -i "VERSION" /etc/SuSE-release |cut -d " " -f3) if [ "${OS}" -eq "11" ] then #$ECHO "Operating System = SLES$OS" OFFVSFTPD=$(chkconfig vsftpd |cut -d " " -f3) if [ "${OFFVSFTPD}" == "off" ] then $ECHO "add vsftpd to autostart" /sbin/chkconfig vsftpd xinetd OFFXINETD=$(/sbin/chkconfig xinetd |cut -d " " -f3) fi if [ "${OFFXINETD}" == "off" ] then $ECHO "add xinetd to autostart" /sbin/chkconfig xinetd on $ECHO "start xinetd" /sbin/service xinetd restart else $ECHO "start xinetd" /sbin/service xinetd restart fi else #Check vsftpd enabled via xinetd $GREP -i disable /etc/xinetd.d/vsftpd | $GREP -iq "^#" T1=$? if [ "${T1}" -ne "0" ] ; then $ECHO "enabling vsftpd" sed -i '/disable/s|^|#|' /etc/xinetd.d/vsftpd #else #$ECHO "vsftpd is already enabled - nothing to do" fi XINETDSTAT=$(systemctl is-enabled xinetd.service) if [ "${XINETDSTAT}" = "disabled" ] then #$ECHO "add xinetd to autostart" $SYSTEMCTL enable xinetd.service $ECHO "start xinetd" $SYSTEMCTL restart xinetd.service else $ECHO "restart xinetd" $SYSTEMCTL restart xinetd.service fi fi } function f_readftpinfos () { #Useradd read -p "Please enter the Ticketnumber: " TNUMBER $ECHO "Ticketnumber \"$TNUMBER\" added!" $ECHO "" read -p "Please enter FTP-Username: " FTPUSER $ECHO "FTP-Username \"$FTPUSER\" added!" $ECHO "" read -p "Please enter FTP-Userpassword: " FTPPW $ECHO "FTP-Userpassword \"$FTPPW\" added!" $ECHO "" read -p "Please enter FTP-Userdescription: " FTPCOMMENT $ECHO "FTP-Userdescription \"$FTPCOMMENT\" added!" $ECHO "" read -p "Please enter FTP-Path (example: /usr/sap/interfaces/abc/cdf): " FTPPATH $ECHO "FTP-Path \"$FTPPATH\" added!" $ECHO "" read -p "Please enter Groupname (default-group: sapsys): " GROUPNAME GROUPNAME=${GROUPNAME:-sapsys} $ECHO "Groupname \"$GROUPNAME\" added!" $ECHO "" read -p "Please enter Emailadress: " MAILADDR $ECHO "Emailadress \"$MAILADDR\" added!" $ECHO "" FIRSTNAME=$(echo ${MAILADDR^} | cut -d "." -f1) } #Add user to ftp-config function f_ftpserviceadd () { $ECHO "$FTPUSER" >> /etc/vsftpd.users } function f_searchfreeUID () { CHECK="true" while [ "$CHECK" == "true" ] do T2=$($CAT /etc/passwd | /usr/bin/cut -d ":" -f3 | $GREP $FTPUID) if [ -z ${T2} ] ; then #$ECHO "Freie UID \"${FTPUID}\" gefunden" CHECK="false" else FTPUID=`expr $FTPUID - 1` if [ "$FTPUID" -eq "$FTPUIDMIN" ]; then $ECHO "Min UID \"${FTPUIDMIN}\" reached! Please contact COM-Support." CHECK="false" #else #$ECHO "Naechste freie UID \"$FTPUID\" gefunden" fi fi done } function f_addftpaccount () { ERROR=$($USERADD -d "$FTPPATH" -u "$FTPUID" -g "$GROUPNAME" -s /bin/false -c "$FTPCOMMENT" -m -p $(openssl passwd -1 "$FTPPW") "$FTPUSER" 3>&2 2>&1 1>&3) T3=$? if [ "${T3}" -ne "0" ] ; then $ECHO "FTP-User "$FTPUSER" not added. Please contact COM-Support!" else $ECHO "FTP-User "$FTPUSER" added" fi } function f_logandmail () { if [ "${T3}" -ne "0" ] ; then $ECHO "FTP Useradd - ERRORS REPORTED!" | mail -s "FTP Useradd - ERRORS REPORTED!" -S "smtp=x.x.x.x" "${MAILADDR}" -r "${MAILADDR}" $ECHO "------------------------------------------------------------------------" >> ${LOGERR} $ECHO "$ERROR" >> ${LOGERR} $ECHO "Ticketnumber "$TNUMBER" executed as user $USER at `date +%H:%M_%d.%m.%y`" >> ${LOGERR} $ECHO "FTP-User "$FTPUSER" not added. Please contact Support!" >> ${LOGERR} $ECHO "------------------------------------------------------------------------" >> ${LOGERR} else $CAT <> ${LOGFILE} $ECHO "Ticketnumber "$TNUMBER" executed as user $USER at `date +%H:%M_%d.%m.%y`" >> ${LOGFILE} $ECHO "FTP-Username: $FTPUSER" >> ${LOGFILE} $ECHO "FTP-Pfad: $FTPPATH" >> ${LOGFILE} $ECHO "------------------------------------------------------------------------" >> ${LOGFILE} fi } f_readftpinfos f_searchfreeUID f_addftpaccount f_ftpserviceadd f_checkOS f_logandmail