diff --git a/cronjob-clean-php b/cronjob-clean-php new file mode 100755 index 0000000..b47cc39 --- /dev/null +++ b/cronjob-clean-php @@ -0,0 +1,4 @@ +#!/bin/bash + +[[ -d /var/lib/php/sessions ]] && find /var/lib/php/sessions -mmin +1440 -type f -print0 | xargs -0 rm -f +[[ -d /var/tmp/php-uploads ]] && find /var/tmp/php-uploads -mmin +1440 -type f -print0 | xargs -0 rm -f diff --git a/cronjob-dehydrated b/cronjob-dehydrated index ec31e99..7afa21c 100755 --- a/cronjob-dehydrated +++ b/cronjob-dehydrated @@ -1,6 +1,5 @@ #!/bin/bash - -# Delay the run for 15 hours (from midnight) and then run at a random time within 3 hours after that. -sleep $(( 54000 + (RANDOM % 10800) )) - -/usr/sbin/dehydrated -c >/dev/null +# Run this job in the background. +( # Delay the run for 15 hours (from midnight) and then run at a random time within 3 hours after that. + sleep $(( 54000 + (RANDOM % 10800) )) + /opt/sbin/dehydrated -c >/dev/null ) & diff --git a/cronjob-rotate-logs-today-symlink b/cronjob-rotate-logs-today-symlink new file mode 100755 index 0000000..f59a139 --- /dev/null +++ b/cronjob-rotate-logs-today-symlink @@ -0,0 +1,32 @@ +#!/bin/bash + +# Default configuration. +LOGS_DIR="/data/logs" + +# Process the directories in the $LOGS_DIR directory. +[[ -d "$LOGS_DIR" ]] && { + TODAY="$(printf "%(%Y/%m/%d)T")" + + for DIR in "$LOGS_DIR"/*/; do + cd "$DIR" 2>/dev/null || { + printf "%s: %s\\n" "${0##*/}" "failed to change directory to '$DIR'" >&2 + continue + } + + # Create the new days' location. + umask 0755 + # shellcheck disable=SC2174 + mkdir -p -m 0755 "$LOGS_DIR/$TODAY" 2>/dev/null || { + printf "%s: %s\\n" "${0##*/}" "failed to create directory '$LOGS_DIR/$TODAY'" >&2 + continue + } + + # Create the 'today' symlink to the new location. + ln -sfn "$TODAY" "today" 2>/dev/null || { + printf "%s: %s\\n" "${0##*/}" "updating 'today' symlink failed in '$DIR'" >&2 + continue + } + done +} + +exit 0 diff --git a/cronjob-update-packages-list b/cronjob-update-packages-list index 7c74c26..203c69a 100755 --- a/cronjob-update-packages-list +++ b/cronjob-update-packages-list @@ -7,6 +7,7 @@ } # Source system info. +# shellcheck disable=SC1091 . /etc/os-release # Create package list depending on system type. @@ -20,7 +21,7 @@ case "$ID" in 'slackware') slackpkg -batch=on -default_answer=y generate-template "$(hostname --short)" >/dev/null [[ -L /etc/pkglist ]] && rm -f /etc/pkglist - ls -1 /var/log/packages/ | rev | cut -d- -f4- | rev >/etc/pkglist + printf "%s\\n" /var/log/packages/* | rev | cut -d- -f4- | rev >/etc/pkglist ;; 'void') xbps-query -l | awk '{ print $2 }' | rev | cut -d- -f2- | rev >/etc/pkglist diff --git a/cronjob-warn-git-status b/cronjob-warn-git-status index 641ec13..2147af1 100755 --- a/cronjob-warn-git-status +++ b/cronjob-warn-git-status @@ -1,17 +1,24 @@ #!/bin/bash -CHECK_DIRS=( '/' '/etc/slackpkg/templates' ) +# Default configuration. +CHECK_DIRS=('/') +EMAIL_TO=('sysadmin@slackware.uk') +EMAIL_FROM="\"Server: ${HOSTNAME%%.*}\" " + +# Allow /etc/default/warn-git-status to override default configuration. +[[ -e /etc/default/warn-git-status ]] && { + # shellcheck disable=SC1091 + source /etc/default/warn-git-status || { + printf "%s: %s\\n" "${0##*/}" "failed reading /etc/default/warn-git-status" >&2 + exit 1 + } +} + OUTPUT_FILE="/tmp/${0##*/}-$$-$RANDOM" # Remove the OUTPUT_FILE when done. trap 'rm -f "$OUTPUT_FILE"' EXIT -# Source the mail configuration. -source /etc/mail.conf "git-status" 2>/dev/null || { - printf "%s: %s\\n" "${0##*/}" "Failed to source /etc/mail.conf" >&2 - exit 1 -} - # Loop through the list and process. for DIR in "${CHECK_DIRS[@]}"; do [[ ! -e "$DIR" ]] || [[ ! -d "$DIR" ]] && continue @@ -20,16 +27,27 @@ for DIR in "${CHECK_DIRS[@]}"; do unset TMP_OUTPUT done +# If there's no output, do nothing. [[ ! -s "$OUTPUT_FILE" ]] && { exit 0 } # Send the message. if [[ -n "${EMAIL_TO[*]}" ]]; then - mailx "${MAILX_ARGS[@]}" -S "from=$EMAIL_FROM" -s "Git statuses" "${EMAIL_TO[@]}" <<<"$(cat "$OUTPUT_FILE")" 2>/dev/null || { - printf "%s: %s\\n" "${0##*/}" "mailx command failed" >&2 + if hash mailx >/dev/null 2>&1; then + mailx -S "from=$EMAIL_FROM" -s "Mail queue" "${EMAIL_TO[@]}" <"$OUTPUT_FILE" 2>/dev/null || { + printf "%s: %s\\n" "${0##*/}" "mailx command failed" >&2 + exit 1 + } + elif hash mail >/dev/null 2>&1; then + mail -r "$EMAIL_FROM" -s "Mail queue" "${EMAIL_TO[@]}" <"$OUTPUT_FILE" 2>/dev/null || { + printf "%s: %s\\n" "${0##*/}" "mail command failed" >&2 + exit 1 + } + else + printf "%s: %s\\n" "${0##*/}" "no mailer command found" >&2 exit 1 - } + fi else printf "%s: %s\\n" "${0##*/}" "no recipient configured for mail delivery" >&2 exit 1 diff --git a/cronjob-warn-smtp-queue b/cronjob-warn-smtp-queue index 150b5d0..f551661 100755 --- a/cronjob-warn-smtp-queue +++ b/cronjob-warn-smtp-queue @@ -1,15 +1,22 @@ #!/bin/bash -# Source the mail configuration. -source /etc/mail.conf "mail-queue" 2>/dev/null || { - printf "%s: %s\\n" "${0##*/}" "Failed to source /etc/mail.conf" >&2 - exit 1 +# Default configuration. +EMAIL_TO=('sysadmin@slackware.uk') +EMAIL_FROM="\"Server: ${HOSTNAME%%.*}\" " + +# Allow /etc/default/warn-smtp-queue to override default configuration. +[[ -e /etc/default/warn-smtp-queue ]] && { + # shellcheck disable=SC1091 + source /etc/default/warn-smtp-queue || { + printf "%s: %s\\n" "${0##*/}" "failed reading /etc/default/warn-smtp-queue" >&2 + exit 1 + } } # Don't do anything unless 'mailq' is installed. hash mailq 2>/dev/null && { # Prevent a race with other cron jobs that produce emails. - sleep $(( RANDOM % 180 )) + sleep $(( 10 + (RANDOM % 30) )) # Get the queue TMP_OUTPUT="$(mailq)" @@ -18,10 +25,20 @@ hash mailq 2>/dev/null && { # Send the message. if [[ -n "${EMAIL_TO[*]}" ]]; then - mailx "${MAILX_ARGS[@]}" -S "from=$EMAIL_FROM" -s "Mail queue" "${EMAIL_TO[@]}" <<<"$TMP_OUTPUT" 2>/dev/null || { - printf "%s: %s\\n" "${0##*/}" "mailx command failed" >&2 + if hash mailx >/dev/null 2>&1; then + mailx -S "from=$EMAIL_FROM" -s "Mail queue" "${EMAIL_TO[@]}" <<<"$TMP_OUTPUT" 2>/dev/null || { + printf "%s: %s\\n" "${0##*/}" "mailx command failed" >&2 + exit 1 + } + elif hash mail >/dev/null 2>&1; then + mail -r "$EMAIL_FROM" -s "Mail queue" "${EMAIL_TO[@]}" <<<"$TMP_OUTPUT" 2>/dev/null || { + printf "%s: %s\\n" "${0##*/}" "mail command failed" >&2 + exit 1 + } + else + printf "%s: %s\\n" "${0##*/}" "no mailer command found" >&2 exit 1 - } + fi else printf "%s: %s\\n" "${0##*/}" "no recipient configured for mail delivery" >&2 exit 1 diff --git a/terraform-http-backend b/terraform-http-backend new file mode 100755 index 0000000..0f3578a Binary files /dev/null and b/terraform-http-backend differ