Welcome Sidechecks-Installer :D
Signed-off-by: hax <hax@lainlounge.xyz>
This commit is contained in:
parent
88c9a514b8
commit
cac4782bd5
1 changed files with 139 additions and 0 deletions
139
sitechecks-installer.sh
Normal file
139
sitechecks-installer.sh
Normal file
|
@ -0,0 +1,139 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Variables
|
||||
SCRIPT_PATH="/usr/local/bin/website_monitor.sh"
|
||||
SERVICE_NAME="sitechecks"
|
||||
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
|
||||
JSON_FILE="/etc/${SERVICE_NAME}/sites.json"
|
||||
LOG_FILE="/var/log/${SERVICE_NAME}.log"
|
||||
|
||||
# Function: Install the monitoring script
|
||||
install_monitor_script() {
|
||||
echo "Copying the monitoring script to ${SCRIPT_PATH}..."
|
||||
cat << 'EOF' > "$SCRIPT_PATH"
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Files
|
||||
INPUT_FILE="/etc/sitechecks/sites.json"
|
||||
LOG_FILE="/var/log/sitechecks.log"
|
||||
|
||||
# Curl options
|
||||
CURL_OPTS=(
|
||||
--silent
|
||||
--max-time 10
|
||||
--location
|
||||
--max-redirs 10
|
||||
--fail
|
||||
--output /dev/null
|
||||
)
|
||||
|
||||
# Function: Describe HTTP status codes
|
||||
http_status_description() {
|
||||
local status="$1"
|
||||
case "$status" in
|
||||
200) echo "OK" ;;
|
||||
301) echo "Moved Permanently" ;;
|
||||
302) echo "Found" ;;
|
||||
400) echo "Bad Request" ;;
|
||||
401) echo "Unauthorized" ;;
|
||||
403) echo "Forbidden" ;;
|
||||
404) echo "Not Found" ;;
|
||||
408) echo "Request Timeout" ;;
|
||||
429) echo "Too Many Requests" ;;
|
||||
500) echo "Internal Server Error" ;;
|
||||
502) echo "Bad Gateway" ;;
|
||||
503) echo "Service Unavailable" ;;
|
||||
504) echo "Gateway Timeout" ;;
|
||||
*) echo "Unknown Status" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Function: Check website availability
|
||||
check_site() {
|
||||
local site="$1"
|
||||
curl "${CURL_OPTS[@]}" --write-out "%{http_code}" "$site" 2>/dev/null
|
||||
}
|
||||
|
||||
# Main function: Monitor websites
|
||||
monitor_sites() {
|
||||
local urls=$(jq -r '.urls[]' "$INPUT_FILE")
|
||||
|
||||
if [[ -z "$urls" ]]; then
|
||||
echo "[$(date)] Error: No URLs found in the input file." >> "$LOG_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for site in $urls; do
|
||||
status=$(check_site "$site")
|
||||
description=$(http_status_description "$status")
|
||||
|
||||
# Log the result
|
||||
echo "[$(date)] URL: $site - Status: $status ($description)" >> "$LOG_FILE"
|
||||
|
||||
# Log errors only
|
||||
if [[ "$status" != "200" ]]; then
|
||||
echo "[$(date)] Error with URL: $site - Status: $status ($description)" >> "$LOG_FILE"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
monitor_sites
|
||||
EOF
|
||||
|
||||
chmod +x "$SCRIPT_PATH"
|
||||
echo "Monitoring script installed."
|
||||
}
|
||||
|
||||
# Function: Create JSON configuration file
|
||||
create_json_config() {
|
||||
echo "Creating JSON configuration file at ${JSON_FILE}..."
|
||||
mkdir -p "$(dirname "$JSON_FILE")"
|
||||
cat << 'EOF' > "$JSON_FILE"
|
||||
{
|
||||
"urls": [
|
||||
"https://example.com",
|
||||
"https://example.org"
|
||||
]
|
||||
}
|
||||
EOF
|
||||
echo "JSON configuration file created."
|
||||
}
|
||||
|
||||
# Function: Create systemd service file
|
||||
create_service_file() {
|
||||
echo "Creating systemd service file at ${SERVICE_FILE}..."
|
||||
cat << EOF > "$SERVICE_FILE"
|
||||
[Unit]
|
||||
Description=Website Monitoring Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
ExecStart=$SCRIPT_PATH
|
||||
Restart=on-failure
|
||||
WorkingDirectory=/usr/local/bin
|
||||
StandardOutput=append:$LOG_FILE
|
||||
StandardError=append:$LOG_FILE
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
echo "Systemd service file created."
|
||||
}
|
||||
|
||||
# Function: Enable and start the service
|
||||
enable_and_start_service() {
|
||||
echo "Enabling and starting the service ${SERVICE_NAME}..."
|
||||
systemctl daemon-reload
|
||||
systemctl enable "${SERVICE_NAME}"
|
||||
systemctl start "${SERVICE_NAME}"
|
||||
echo "Service ${SERVICE_NAME} is now running."
|
||||
}
|
||||
|
||||
# Main installation process
|
||||
install_monitor_script
|
||||
create_json_config
|
||||
create_service_file
|
||||
enable_and_start_service
|
||||
|
||||
echo "Installation completed."
|
Loading…
Add table
Reference in a new issue