mirror of
https://github.com/myvesta/vesta
synced 2025-08-20 05:14:10 -07:00
v-change-wordpress-admin-passwords
This commit is contained in:
parent
2fd60fc29d
commit
b8b75f0dde
1 changed files with 39 additions and 7 deletions
|
@ -25,6 +25,13 @@ WP_PATH="/home/$USER/web/$DOMAIN/public_html"
|
|||
|
||||
# WP-CLI wrapper
|
||||
WP_RUN=(/usr/local/vesta/bin/v-run-wp-cli $DOMAIN --skip-plugins --skip-themes)
|
||||
return_code=$?
|
||||
|
||||
if [ $return_code -ne 0 ]; then
|
||||
echo "WP-CLI error:"
|
||||
cat /home/$USER/web/$DOMAIN/wp-cli-error.log
|
||||
exit $return_code
|
||||
fi
|
||||
|
||||
# random 10-char password
|
||||
gen_pass() { tr -dc 'A-Za-z0-9' </dev/urandom | head -c 10; }
|
||||
|
@ -38,9 +45,13 @@ echo
|
|||
echo "WordPress administrators for $DOMAIN:"
|
||||
echo "-------------------------------------"
|
||||
|
||||
if [ -f /home/$USER/web/$DOMAIN/wp-admin-password-change.txt ]; then
|
||||
rm /home/$USER/web/$DOMAIN/wp-admin-password-change.txt
|
||||
fi
|
||||
|
||||
ADMIN_LIST_CSV=$("${WP_RUN[@]}" user list --role=administrator \
|
||||
--fields=ID,user_login,user_email \
|
||||
--format=csv 2>/dev/null | tail -n +2)
|
||||
--format=csv --skip-plugins --skip-themes 2>/dev/null | tail -n +2)
|
||||
[ -z "$ADMIN_LIST_CSV" ] && { echo "No administrator accounts found."; exit 0; }
|
||||
|
||||
printf "%-6s %-20s %s\n" "ID" "Username" "Email"
|
||||
|
@ -59,7 +70,8 @@ while IFS=',' read -r ID LOGIN EMAIL; do
|
|||
read -r -p "Action for \"$TARGET\" [d/c/s/x]? " ACT < /dev/tty
|
||||
case "$ACT" in
|
||||
[Dd]* )
|
||||
read -r -p "Really DELETE \"$TARGET\" ? (y/n, default: y) " CONF < /dev/tty
|
||||
# read -r -p "Really DELETE \"$TARGET\" ? (y/n, default: y) " CONF < /dev/tty
|
||||
CONF="y"
|
||||
if [[ ! "$CONF" =~ ^[Nn]$ ]]; then
|
||||
# build an array of OTHER admin usernames
|
||||
mapfile -t OTHER_USERS < <(echo "$ADMIN_LIST_CSV" | awk -F',' -v cur="$ID" '$1!=cur {print $2}')
|
||||
|
@ -70,7 +82,7 @@ while IFS=',' read -r ID LOGIN EMAIL; do
|
|||
DEFAULT_USER="${OTHER_USERS[0]}"
|
||||
echo "Available admin usernames for reassignment: ${OTHER_USERS[*]}"
|
||||
while true; do
|
||||
read -r -p "Reassign content to which username? [default $DEFAULT_USER] " REASSIGN < /dev/tty
|
||||
read -r -p "Reassign content to which username? [default: $DEFAULT_USER] " REASSIGN < /dev/tty
|
||||
REASSIGN=${REASSIGN:-$DEFAULT_USER}
|
||||
if printf '%s\n' "${OTHER_USERS[@]}" | grep -qx "$REASSIGN"; then
|
||||
break
|
||||
|
@ -79,8 +91,13 @@ while IFS=',' read -r ID LOGIN EMAIL; do
|
|||
fi
|
||||
done
|
||||
# delete by username, reassign by username
|
||||
"${WP_RUN[@]}" user delete "$LOGIN" --reassign="$REASSIGN" --yes >/dev/null 2>&1
|
||||
echo "$TARGET deleted (content reassigned to $REASSIGN)."
|
||||
"${WP_RUN[@]}" user delete "$LOGIN" --reassign="$REASSIGN" --yes --skip-plugins --skip-themes
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "$TARGET deleted (content reassigned to $REASSIGN)."
|
||||
else
|
||||
cat /home/$USER/web/$DOMAIN/wp-cli-error.log
|
||||
echo "Failed to delete $TARGET."
|
||||
fi
|
||||
else
|
||||
echo "Deletion cancelled."
|
||||
fi
|
||||
|
@ -88,9 +105,14 @@ while IFS=',' read -r ID LOGIN EMAIL; do
|
|||
;;
|
||||
[Cc]* )
|
||||
NEW_PASS=$(gen_pass)
|
||||
if "${WP_RUN[@]}" user update "$LOGIN" --user_pass="$NEW_PASS" --quiet; then
|
||||
echo "Password for $TARGET changed to: $NEW_PASS"
|
||||
"${WP_RUN[@]}" user update "$LOGIN" --user_pass="$NEW_PASS" --skip-plugins --skip-themes
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Password for username '$TARGET' changed to: $NEW_PASS"
|
||||
echo "Password for username '$TARGET' changed to: $NEW_PASS" >> /home/$USER/web/$DOMAIN/wp-admin-password-change.txt
|
||||
chown $USER:$USER /home/$USER/web/$DOMAIN/wp-admin-password-change.txt
|
||||
chmod 600 /home/$USER/web/$DOMAIN/wp-admin-password-change.txt
|
||||
else
|
||||
cat /home/$USER/web/$DOMAIN/wp-cli-error.log
|
||||
echo "Failed to change password for $TARGET."
|
||||
fi
|
||||
break
|
||||
|
@ -125,4 +147,14 @@ echo "Cache flushed and salts refreshed."
|
|||
echo
|
||||
echo "Done."
|
||||
|
||||
if [ -f /home/$USER/web/$DOMAIN/wp-admin-password-change.txt ]; then
|
||||
echo "-------------------------------------"
|
||||
echo "For website $DOMAIN - new wp-admin passwords have been set."
|
||||
echo "-------------------------------------"
|
||||
cat /home/$USER/web/$DOMAIN/wp-admin-password-change.txt
|
||||
echo "-------------------------------------"
|
||||
echo ""
|
||||
read -r -p "== Press Enter to continue..."
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue