#!/bin/sh # # idea & code by Deniss (deniss@fuckoff.com ) C2003 # FILEWITHPASS=/home/pass/webpassfile HTTPAUTHFILE=/var/www/htdocs/auth/.htpasswd USER=secuser LENGTH=5 HTPASSWD=/usr/bin/htpasswd GREP=/usr/bin/grep CUT=/usr/bin/cut TOUCH=/usr/bin/touch CHOWN=/usr/bin/chown CHMOD=/usr/bin/chmod function genpass() { MATRIX="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" while [ "${n:=1}" -le "$LENGTH" ] do PASS="$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}" let n+=1 done echo ${PASS} return } if [ -s ${FILEWITHPASS} ]; then { CURRENT=`tail --lines=1 ${FILEWITHPASS}` || echo "Cant find pass file ${FILEWITHPASS}" CURRENT=`echo ${CURRENT} | ${GREP} -o -E '[a-zA-Z0-9]+' | ${CUT} -c 0-${LENGTH}` }; else { CURRENT=`genpass` ${TOUCH} ${FILEWITHPASS} ${CHOWN} pass ${FILEWITHPASS} ${CHMOD} 0640 ${FILEWITHPASS} }; fi NEXT=`genpass` echo ${CURRENT} > ${FILEWITHPASS} echo ${NEXT} >> ${FILEWITHPASS} cat ${FILEWITHPASS} ${HTPASSWD} -b ${HTTPAUTHFILE} ${USER} ${CURRENT} >/dev/null