#!/bin/bash # update repo git pull # update wp-cli if [ -f /usr/local/bin/wp ]; then /usr/local/bin/wp cli update --yes --quiet --allow-root else # wp-cli not found, download & install curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar sudo mv wp-cli.phar /usr/local/bin/wp chmod +x /usr/local/bin/wp fi # update scripts in bin chmod 755 local/bin/* readarray -t bin_script_array < <(ls -1 local/bin/) for bin_script in "${bin_script_array[@]}"; do if [ -f /usr/local/bin/$bin_script ]; then if ! diff -q local/bin/$bin_script /usr/local/bin/$bin_script ; then echo "Updating /usr/local/bin/$bin_script" cp local/bin/$bin_script /usr/local/bin/$bin_script echo fi else echo "Adding new script /usr/local/bin/$bin_script" cp local/bin/$bin_script /usr/local/bin/$bin_script echo fi done # check wp-cron.sh for update if ! diff -q local/sbin/wp-cron.sh /usr/local/sbin/wp-cron.sh ; then cp local/sbin/wp-cron.sh /usr/local/sbin/wp-cron.sh chmod 755 /usr/local/sbin/wp-cron.sh echo "wp-cron.sh updated" echo fi # check systemd timer for update if ! diff -q local/systemd/wp-cron.service /usr/local/lib/systemd/system/wp-cron.service ; then cp local/systemd/wp-cron.service /usr/local/lib/systemd/system/wp-cron.service chmod 644 /usr/local/lib/systemd/system/wp-cron.service echo "wp-cron.service updated" echo fi if ! diff -q local/systemd/wp-cron.timer /usr/local/lib/systemd/system/wp-cron.timer ; then cp local/systemd/wp-cron.timer /usr/local/lib/systemd/system/wp-cron.timer chmod 644 /usr/local/lib/systemd/system/wp-cron.timer echo "wp-cron.timer updated" echo fi # check apache wp-security config for update if ! diff -q etc/apache2/conf-available/wp-security.conf /etc/apache2/conf-available/wp-security.conf ; then cp etc/apache2/conf-available/wp-security.conf /etc/apache2/conf-available/wp-security.conf chmod 644 /etc/apache2/conf-available/wp-security.conf systemctl restart apache2 echo "wp-security updated" echo fi # check bash completion config for update if ! diff -q etc/bash_completion.d/wp-cli /etc/bash_completion.d/wp-cli ; then cp etc/bash_completion.d/wp-cli /etc/bash_completion.d/wp-cli chmod 644 /etc/bash_completion.d/wp-cli echo "bash completion config updated" echo fi # check fail2ban wordpress configs if [[ -d /etc/fail2ban/ ]]; then RESTARTF2B=false if ! diff -q etc/fail2ban/filter.d/wp-auth.conf /etc/fail2ban/filter.d/wp-auth.conf ; then cp etc/fail2ban/filter.d/wp-auth.conf /etc/fail2ban/filter.d/wp-auth.conf chmod 644 /etc/fail2ban/filter.d/wp-auth.conf echo "fail2ban/filter.d/wp-auth.conf updated" echo RESTARTF2B=true fi if ! diff -q etc/fail2ban/filter.d/xmlrpc.conf /etc/fail2ban/filter.d/xmlrpc.conf ; then cp etc/fail2ban/filter.d/xmlrpc.conf /etc/fail2ban/filter.d/xmlrpc.conf chmod 644 /etc/fail2ban/filter.d/xmlrpc.conf echo "fail2ban/filter.d/xmlrpc.conf updated" echo RESTARTF2B=true fi if ! diff -q etc/fail2ban/jail.d/wp-auth.conf /etc/fail2ban/jail.d/wp-auth.conf ; then cp etc/fail2ban/jail.d/wp-auth.conf /etc/fail2ban/jail.d/wp-auth.conf chmod 644 /etc/fail2ban/jail.d/wp-auth.conf echo "fail2ban/jail.d/wp-auth.conf updated" echo RESTARTF2B=true fi if ! diff -q etc/fail2ban/jail.d/xmlrpc.conf /etc/fail2ban/jail.d/xmlrpc.conf ; then cp etc/fail2ban/jail.d/xmlrpc.conf /etc/fail2ban/jail.d/xmlrpc.conf chmod 644 /etc/fail2ban/jail.d/xmlrpc.conf echo "fail2ban/jail.d/xmlrpc.conf updated" echo RESTARTF2B=true fi if [[ $RESTARTF2B = true ]]; then systemctl restart fail2ban fi else echo "Fail2ban not installed, skipping fail2ban wordpress configs." fi