| @@ -0,0 +1,131 @@ | |||||
| #!/bin/bash -x | |||||
| usage() | |||||
| { | |||||
| echo "Usage: $0 [-h ] [ -s website ] [ -l | -v | -u userid ]" >&2 | |||||
| exit 1 | |||||
| } | |||||
| while getopts ":hs:lu:v" opt; | |||||
| do | |||||
| case "$opt" in | |||||
| h) | |||||
| echo "Usage:" | |||||
| echo " $0 -h Display this help message." | |||||
| echo " $0 -s <website> The website is a mandatory argument." | |||||
| echo " $0 -s <website> -l List WordPress users." | |||||
| echo " $0 -s <website> -v Display the WordPress version" | |||||
| echo " $0 -s <website> -u <userid> Generate and set a random password for this WordPress userid." | |||||
| exit 0 | |||||
| ;; | |||||
| s) | |||||
| WEB=$OPTARG | |||||
| ;; | |||||
| l) | |||||
| LIST=1 | |||||
| ;; | |||||
| u) | |||||
| USERID=$OPTARG | |||||
| ;; | |||||
| v) | |||||
| VERSION=1 | |||||
| ;; | |||||
| \?) | |||||
| echo "Error: Invalid Option: -${OPTARG}" >&2 | |||||
| usage | |||||
| ;; | |||||
| :) | |||||
| echo "Error: -${OPTARG} requires an argument." | |||||
| usage | |||||
| ;; | |||||
| *) | |||||
| usage | |||||
| ;; | |||||
| esac | |||||
| done | |||||
| if [ -z ${WEB} ]; then | |||||
| usage | |||||
| fi | |||||
| # declaration section | |||||
| # functions section | |||||
| check_err() | |||||
| { | |||||
| STATUS=$? | |||||
| if [ ${STATUS} -ne 0 ]; then | |||||
| echo "Unexpected error: ${STATUS}" | |||||
| exit ${STATUS} | |||||
| fi | |||||
| } | |||||
| function get_sysuser() { | |||||
| SYSUSER=`ls -l /var/www/ | grep ${WEB} | awk '{ print $11 }' | awk -F'/' '{ print $6 }'` | |||||
| echo ${SYSUSER} | |||||
| } | |||||
| function get_rootpath() { | |||||
| ROOTPATH="/var/www/${WEB}" | |||||
| echo ${ROOTPATH} | |||||
| } | |||||
| function get_php() { | |||||
| VERSION=`echo "select server_php.name from server_php join web_domain where server_php.server_php_id=web_domain.server_php_id and web_domain.server_php_id=90 and web_domain.server_php_id!=0 and web_domain.domain like '${WEB}'\G" | mysql --defaults-file=/etc/mysql/debian.cnf dbispconfig | awk '$1 ~ /:/ { print $2 }'` | |||||
| if [ -z "${VERSION}" ]; then | |||||
| echo "/usr/bin/php" | |||||
| else | |||||
| echo "/opt/php-${VERSION}/bin/php" | |||||
| fi | |||||
| } | |||||
| function change_user_password() { | |||||
| MYUSER=$(get_sysuser) | |||||
| MYPATH=$(get_rootpath) | |||||
| MYPHP=$(get_php) | |||||
| chsh -s /bin/bash ${MYUSER} | |||||
| cp /root/bin/wp-cli.phar ${MYPATH}/private | |||||
| NEWPASS=`openssl rand -base64 12` | |||||
| su -c "cd web && ${MYPHP} ../private/wp-cli.phar user update ${USERID} --user_pass=${NEWPASS}" - ${MYUSER} | |||||
| rm ${MYPATH}/private/wp-cli.phar | |||||
| chsh -s /bin/false ${MYUSER} | |||||
| echo ${NEWPASS} | |||||
| } | |||||
| function list_wp_users() { | |||||
| MYUSER=$(get_sysuser) | |||||
| MYPATH=$(get_rootpath) | |||||
| MYPHP=$(get_php) | |||||
| chsh -s /bin/bash ${MYUSER} | |||||
| cp /root/bin/wp-cli.phar ${MYPATH}/private | |||||
| su -c "cd web && ${MYPHP} ../private/wp-cli.phar user list" - ${MYUSER} | |||||
| rm ${MYPATH}/private/wp-cli.phar | |||||
| chsh -s /bin/false ${MYUSER} | |||||
| } | |||||
| function show_wp_version() { | |||||
| MYUSER=$(get_sysuser) | |||||
| MYPATH=$(get_rootpath) | |||||
| MYPHP=$(get_php) | |||||
| chsh -s /bin/bash ${MYUSER} | |||||
| cp /root/bin/wp-cli.phar ${MYPATH}/private | |||||
| su -c "cd web && ${MYPHP} ../private/wp-cli.phar core version --extra" - ${MYUSER} | |||||
| rm ${MYPATH}/private/wp-cli.phar | |||||
| chsh -s /bin/false ${MYUSER} | |||||
| } | |||||
| # main section | |||||
| if [ "${LIST}" == 1 ]; then | |||||
| list_wp_users | |||||
| exit | |||||
| elif [ "${VERSION}" == 1 ]; then | |||||
| show_wp_version | |||||
| exit | |||||
| else | |||||
| change_user_password | |||||
| fi | |||||