40 lines
1.6 KiB
Bash
Executable File
40 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# wordpress-tools
|
|
# https://git.stack-source.com/msb/wordpress-tools
|
|
# Copyright (c) 2023 Matthew Saunders Brown <matthewsaundersbrown@gmail.com>\
|
|
# 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 -v command line option for verbose mode, which can show many non-error warnings
|
|
# otherwise script runs in quiet mode which only outputs hard failures
|
|
|
|
# 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 = '-v' ]]; then
|
|
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 || echo -e "\e\033[01;31mFailure:\e\033[m $VHOST failed verification"
|
|
else
|
|
timeout 10 su -c "/usr/local/bin/wp core verify-checksums --include-root --path=/srv/www/$VHOST/html/ --quiet" $VHOST_USER || echo -e "\e\033[01;31mFailure:\e\033[m $VHOST failed verification"
|
|
fi
|
|
else
|
|
echo "NOTICE: wp core is-installed failed for $VHOST (user $VHOST_USER)"
|
|
fi
|
|
fi
|
|
done
|