一、生成htpasswd的账号密码 htpasswd.sh
#!/bin/bash # define restricted path PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH # adirname - return absolute dirname of given file adirname() { odir=`pwd`; cd `dirname $1`; pwd; cd "${odir}"; } # --------- # constants # --------- MYNAM=`basename "$0"` MYDIR=`adirname "$0"` HTF=${MYDIR}/htpasswd/auth.secrets # --------- # functions # --------- message() { echo "$@"; } # message - output message on stdout error() { echo "$@" >&2; } # error - output message on stderr die() { error "$@"; exit 1; } # die - output message on stderr and exit # check uid (should be root) [ `id -u` -eq "0" ] || die "${MYNAM}: this should be run as root only!" echo "=====================================" echo "# A tool like htpasswd for Nginx #" echo "#-----------------------------------#" echo "# Author: wang hengzhi #" echo "=====================================" #set UserName username="" read -p "Please input UserName: " username if [ "$username" = "" ]; then echo "Error:UserName can't be NULL!" exit 1 fi echo "===========================" echo "UserName was: $username" echo "===========================" #set password unpassword="" read -p "Please input the Password: " unpassword if [ "$unpassword" = "" ]; then echo "Error:Password can't be NULL!" exit 1 fi echo "===========================" echo "Password was: $unpassword" echo "===========================" password=$(/usr/bin/perl -e 'print crypt($ARGV[0], "W18-salt-hash")' $unpassword) #set htpasswd file htfile="" read -p "Please input Auth filename(${HTF}): " htfile if [ "$htfile" = "" ]; then htfile="${HTF}" fi echo "===========================" echo "Auth File: $htfile" echo "===========================" if [ -f $htfile ]; then echo "Auth File: exist !" else echo "Auth File: not found !" fi echo "===========================" echo "" read -p "Press any key to Create...or Press Ctrl+c to cancel" T if [ -f $htfile ]; then echo "Modify Auth file......" sed -i "/${username}:/d" $htfile else echo "Create Auth file......" fi echo "${username}:${password}" >> $htfile echo "Write Auth file successful,auth file path: $htfile." echo -e " "
二、仅显示htpasswd 的账号密码echo_htpasswd.sh
#!/bin/bash # define restricted path PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH # adirname - return absolute dirname of given file adirname() { odir=`pwd`; cd `dirname $1`; pwd; cd "${odir}"; } # --------- # constants # --------- MYNAM=`basename "$0"` MYDIR=`adirname "$0"` HTF=${MYDIR}/htpasswd/auth.secrets # --------- # functions # --------- message() { echo "$@"; } # message - output message on stdout error() { echo "$@" >&2; } # error - output message on stderr die() { error "$@"; exit 1; } # die - output message on stderr and exit # check uid (should be root) #[ `id -u` -eq "0" ] || # die "${MYNAM}: this should be run as root only!" echo "=====================================" echo "# A tool like htpasswd for Nginx #" echo "#-----------------------------------#" echo "# Author: wang hengzhi #" echo "=====================================" #set UserName username="" read -p "Please input UserName: " username if [ "$username" = "" ]; then echo "Error:UserName can't be NULL!" exit 1 fi echo "===========================" echo "UserName was: $username" echo "===========================" #set password unpassword="" read -p "Please input the Password: " unpassword if [ "$unpassword" = "" ]; then echo "Error:Password can't be NULL!" exit 1 fi echo "===========================" echo "Password was: $unpassword" echo "===========================" password=$(/usr/bin/perl -e 'print crypt($ARGV[0], "W18-salt-hash")' $unpassword) echo -e " " echo "${username}:${password}" echo -e " "