#!/bin/bash # # wordpress-tools # https://git.stack-source.com/msb/wordpress-tools # Copyright (c) 2023 Matthew Saunders Brown \ # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) # must be root, will su to vhost users for wp cron runs if [ "$USER" != "root" ]; then exec sudo $0 fi # add -q command line option for quiet mode, which only outputs hard failures # otherwise this script runs in verbose mode which shows more info, including 'File should not exist' warnings # create virtualhostArray listing all virtualhost on the server cd /srv/www virtualhostArray=(`ls -1|grep -v ^html$`) for VHOST in "${virtualhostArray[@]}" do # basic check for WP install if [ -f /srv/www/$VHOST/html/wp-config.php ]; then VHOST_USER=$(stat -c '%U' /srv/www/$VHOST) # confirm that WP really is installed if $(timeout 5 su -c "wp core is-installed --path=/srv/www/$VHOST/html/" $VHOST_USER); then # run verify-checksums for VHOST as VHOST_USER if [[ $1 = '-q' ]]; then timeout 10 su -c "/usr/local/bin/wp core verify-checksums --include-root --path=/srv/www/$VHOST/html/ --quiet" $VHOST_USER else echo echo "running verify-checksums on $VHOST" timeout 10 su -c "/usr/local/bin/wp core verify-checksums --include-root --path=/srv/www/$VHOST/html/" $VHOST_USER fi else echo "NOTICE: wp core is-installed failed for $VHOST (user $VHOST_USER)" fi fi done