#!/bin/sh # Settings SITE_URL="https://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html" MAIL_TO="$USER" MAIL_FROM="info@holiday.kareha.org" MAIL_SUBJECT="Holiday Site Updated" MAIL_BODY="Holiday web site has been updated." # Constants EXIT_SUCCESS=0 EXIT_FAILURE=1 # Verify the required runtime environment verify_command() { if ! command -v $1 >/dev/null; then echo "This script requires \"$1\" to be installed. Please install it and try again." exit $EXIT_FAILURE fi } verify_command "curl" verify_command "mailx" # Logging CURRENT_MONTH=$(date "+%Y-%m%z") SCRIPT_NAME=$(basename $0) LOG_DIR="log" LOG_FILE="$LOG_DIR/$SCRIPT_NAME-$CURRENT_MONTH" get_current_time() { date "+%Y-%m-%d %H:%M:%S%z" } log() { local timestamp=$(get_current_time) local message=$1 echo "$timestamp $message" >>$LOG_FILE } send_mail() { echo "$MAIL_BODY" | mailx -r "$MAIL_FROM" -s "$MAIL_SUBJECT" "$MAIL_TO" if [ $? -ne 0 ]; then log "Failed to send email" fi } # Acquire the lock or exit LOCK_DIR="$SCRIPT_NAME-lock" if ! mkdir "$LOCK_DIR" 2>/dev/null; then echo "Another process is holding the lock. Exiting." exit $EXIT_FAILURE fi mkdir -p $LOG_DIR # Internal configuration settings TMP_HTML_FILE="summary-jp-tmp.html" HTML_FILE="summary-jp.html" # Run curl -sS -L -o $TMP_HTML_FILE $SITE_URL if ! diff -q $HTML_FILE $TMP_HTML_FILE >/dev/null 2>&1; then CACHE_DIR="cache" mkdir -p "$CACHE_DIR" CURRENT_DATETIME=$(date "+%Y-%m-%d_%H:%M:%S%z") cp $TMP_HTML_FILE "$CACHE_DIR/summary-jp-$CURRENT_DATETIME.html" mv $TMP_HTML_FILE $HTML_FILE log "Changed" send_mail ./extract ./merge 2>/dev/null else log "No Change" rm $TMP_HTML_FILE fi # Release the lock rmdir "$LOCK_DIR" # Exit exit $EXIT_SUCCESS