#!/bin/bash #################################################################################################### #### author: SlickStack ############################################################################ #### link: https://slickstack.io ################################################################### #### mirror: http://mirrors.slickstack.io/crons/11-cron-half-monthly.txt ########################### #### path: /var/www/crons/11-cron-half-monthly ##################################################### #### destination: n/a (not a boilerplate) ########################################################## #### purpose: SlickStack core cron job *half-monthly* (11/13) will run every ~2 weeks ############## #### module version: Ubuntu 20.04 LTS ############################################################## #### sourced by: root crontab ###################################################################### #### bash aliases: ss cron half monthly ############################################################ #################################################################################################### ## NEVER MODIFY THE ROOT CRONTAB AND SS CORE CRON JOBS OR YOUR STACK WILL STOP WORKING ## ## INSTEAD CUSTOMIZE SS_INTERVAL SETTINGS OR ADD CUSTOM JOBS IN YOUR SS-CONFIG ## ## include SlickStack configuration ## source /var/www/ss-config ## include SlickStack functions ## source /var/www/ss-functions #################################################################################################### #### 11-Cron-Half-Monthly: Ensure SS-Check + SS-Worker Intact (Core Bash Scripts) ################## #################################################################################################### ## SNIPPET: ss core cron jobs ## this improves redundancy by having ss core cron jobs ensure ss core bash scripts exist ## ## the root crontab in SlickStack likewise ensures that ss core cron jobs exist ## ## ensure ss-check exists and intact ## if [[ ! -f "$PATH_SS_CHECK" ]] || [[ -z $(grep -q "$SS_EOF" "$PATH_SS_CHECK") ]]; then rm /tmp/ss-check* wget -O /tmp/ss-check "$MIRROR_SS_CHECK" cp /tmp/ss-check /var/www/ss-check chown root:root /var/www/ss-check ## must be root:root chmod 0700 /var/www/ss-check ## 0700 means root can execute rm /tmp/ss-check* fi ## ensure ss-worker exists and intact ## if [[ ! -f "$PATH_SS_WORKER" ]] || [[ -z $(grep -q "$SS_EOF" "$PATH_SS_WORKER") ]]; then rm /tmp/ss-worker* wget -O /tmp/ss-worker "$MIRROR_SS_WORKER" cp /tmp/ss-worker /var/www/ss-worker chown root:root /var/www/ss-worker ## must be root:root chmod 0700 /var/www/ss-worker ## 0700 means root can execute rm /tmp/ss-worker* fi #################################################################################################### #### 11-Cron-Half-Monthly: Run Scheduled Tasks ##################################################### #################################################################################################### ## the below tasks will be called if configured to run at this interval in ss-config ## ## certain tasks are automatically called if the relevant interval is missing ## ## run custom cron jobs ## if [[ -n "$SS_CUSTOM_CRON_HALF_MONTHLY" ]]; then echo "$SS_CUSTOM_CRON_HALF_MONTHLY" fi ## run ss-install-wordpress-core if set to half-monthly ## if [[ "$SS_INTERVAL_INSTALL_WORDPRESS_CORE" == "half-monthly" || -z "$SS_INTERVAL_INSTALL_WORDPRESS_CORE" ]]; then source /var/www/ss-install-wordpress-core fi ## run ss-install-wordpress-config if set to half-monthly ## if [[ "$SS_INTERVAL_INSTALL_WORDPRESS_CONFIG" == "half-monthly" ]]; then source /var/www/ss-install-wordpress-config fi ## run ss-dos2unix if set to half-monthly ## if [[ "$SS_INTERVAL_DOS2UNIX" == "half-monthly" ]]; then source /var/www/ss-dos2unix fi ## run ss-scan-malware if set to half-monthly ## if [[ "$SS_INTERVAL_SCAN_MALWARE" == "half-monthly" ]]; then source /var/www/ss-scan-malware fi ## run ss-optimize-database if set to half-monthly ## if [[ "$SS_INTERVAL_OPTIMIZE_DATABASE" == "half-monthly" ]]; then source /var/www/ss-optimize-database fi ## run ss-install-php if set to half-monthly ## if [[ "$SS_INTERVAL_INSTALL_PHP" == "half-monthly" ]]; then source /var/www/ss-install-php fi ## run ss-install-redis if set to half-monthly ## if [[ "$SS_INTERVAL_INSTALL_REDIS" == "half-monthly" ]]; then source /var/www/ss-install-redis fi ## run ss-install-mysql if set to half-monthly ## if [[ "$SS_INTERVAL_INSTALL_MYSQL" == "half-monthly" ]]; then source /var/www/ss-install-mysql fi ## run ss-install-nginx if set to half-monthly ## if [[ "$SS_INTERVAL_INSTALL_NGINX" == "half-monthly" ]]; then source /var/www/ss-install-nginx fi ## run ss-encrypt if set to half-monthly ## if [[ "$SS_INTERVAL_ENCRYPT" == "half-monthly" ]]; then source /var/www/ss-encrypt fi ## run ss-install-adminer if set to half-monthly ## if [[ "$SS_INTERVAL_INSTALL_ADMINER" == "half-monthly" ]]; then source /var/www/ss-install-adminer fi ## run ss-purge if set to half-monthly ## if [[ "$SS_INTERVAL_PURGE" == "half-monthly" ]]; then source /var/www/ss-purge fi ## run ss-install-clamav if set to half-monthly ## if [[ "$SS_INTERVAL_INSTALL_CLAMAV" == "half-monthly" ]]; then source /var/www/ss-install-clamav fi ## run ss-install-ubuntu-bash if set to half-monthly ## if [[ "$SS_INTERVAL_INSTALL_UBUNTU_BASH" == "half-monthly" ]]; then source /var/www/ss-install-ubuntu-bash fi ## run ss-install-ubuntu-users if set to half-monthly ## if [[ "$SS_INTERVAL_INSTALL_UBUNTU_USERS" == "half-monthly" ]]; then source /var/www/ss-install-ubuntu-users fi ## run ss-install-ubuntu-ssh if set to half-monthly ## if [[ "$SS_INTERVAL_INSTALL_UBUNTU_SSH" == "half-monthly" ]]; then source /var/www/ss-install-ubuntu-ssh fi ## run ss-install-ubuntu-kernel if set to half-monthly ## if [[ "$SS_INTERVAL_INSTALL_UBUNTU_KERNEL" == "half-monthly" ]]; then source /var/www/ss-install-ubuntu-kernel fi ## run ss-install-ubuntu-crontab if set to half-monthly or if not defined (default) ## if [[ "$SS_INTERVAL_INSTALL_UBUNTU_CRONTAB" == "half-monthly" || -z "$SS_INTERVAL_INSTALL_UBUNTU_CRONTAB" ]]; then source /var/www/ss-install-ubuntu-crontab fi ## run ss-update if set to half-monthly ## if [[ "$SS_INTERVAL_UPDATE" == "half-monthly" ]]; then source /var/www/ss-update fi ## run ss-reboot if set to half-monthly ## if [[ "$SS_INTERVAL_REBOOT" == "half-monthly" ]]; then source /var/www/ss-reboot fi #################################################################################################### #### 11-Cron-Half-Monthly: Reset Permissions (SS Core Bash Scripts) ################################ #################################################################################################### ## SNIPPET: ss core cron jobs ## we hardcode this permissions reset snippet into ss core cron jobs for redundancy ## ## chmod 700 means only the root/sudo users can execute ss core bash scripts ## ## reset permissions ## chown root:root /var/www/ss* ## must be root:root chmod 0700 /var/www/ss* ## 0700 means root can execute chown root:root /var/www/bash/ss* ## must be root:root chmod 0700 /var/www/bash/ss* ## 0700 means root can execute #################################################################################################### #### 11-Cron-Half-Monthly: Delete Lock File ######################################################## #################################################################################################### ## here we delete the lock file associated with this cron job to clear the cron queue ## ## this is technically not necessary but we do it anyway for extra security ## ## delete lock file ## rm /tmp/11-cron-half-monthly*.lock* #################################################################################################### #### 11-Cron-Half-Monthly: Touch Timestamp File (End Script) ####################################### #################################################################################################### ## this is a dummy timestamp file that will remember the last time this script was run ## ## it can be useful for developer reference and is sometimes used by SlickStack ## ## script timestamp ## touch /var/www/meta/.timestamp-11-cron-half-monthly #################################################################################################### #### SlickStack: External References Used To Improve This Script (Thanks, Interwebz) ############### #################################################################################################### ## Ref: https://bash.cyberciti.biz/guide/Setting_up_permissions_on_a_script ## Ref: https://stackoverflow.com/questions/22861580/bash-script-check-if-a-file-contains-a-specific-line ## Ref: https://stackoverflow.com/questions/4749330/how-to-test-if-string-exists-in-file-with-bash/14201583 ## Ref: https://stackoverflow.com/questions/11287861/how-to-check-if-a-file-contains-a-specific-string-using-bash ## Ref: https://stackoverflow.com/questions/4749330/how-to-test-if-string-exists-in-file-with-bash- ## Ref: https://stackoverflow.com/questions/42377739/while-file-doesnt-contain-string-bash ## SS_EOF