stable #2

Merged
alientim merged 89 commits from stable into dev 2024-11-15 10:37:11 +01:00
Showing only changes of commit bf0b5e857f - Show all commits

View File

@@ -3,13 +3,16 @@
# Log file # Log file
log_file="/var/log/watchdog.log" log_file="/var/log/watchdog.log"
# Configuration file
config_file="/etc/watchdog.conf"
# Function to update watchdog configuration
update_watchdog_config() {
# Extract watchdog IP addresses # Extract watchdog IP addresses
watchdog=$(sudo cat /var/lib/dhcp/* | grep -a "option watchdog" | tail -1 | \ watchdog=$(sudo cat /var/lib/dhcp/* | grep -a "option watchdog" | tail -1 | \
awk '{for (i=3; i<=NF; i++) printf "%s ", $i}' | tr -d '";') awk '{for (i=3; i<=NF; i++) printf "%s ", $i}' | tr -d '";')
IFS=' ' read -r -a ip_array <<< "$watchdog"
# Configuration file IFS=' ' read -r -a ip_array <<< "$watchdog"
config_file="/etc/watchdog.conf"
# Backup current configuration # Backup current configuration
if sudo cp "$config_file" "$config_file.bak"; then if sudo cp "$config_file" "$config_file.bak"; then
@@ -27,7 +30,6 @@ echo "interval = 60" | sudo tee -a "$config_file" > /dev/null
if [ ${#ip_array[@]} -eq 0 ]; then if [ ${#ip_array[@]} -eq 0 ]; then
echo "No IP addresses found. Watchdog configuration cleared." >> "$log_file" echo "No IP addresses found. Watchdog configuration cleared." >> "$log_file"
sudo systemctl stop watchdog
else else
for ip in "${ip_array[@]}"; do for ip in "${ip_array[@]}"; do
echo "ping = $ip" | sudo tee -a "$config_file" > /dev/null echo "ping = $ip" | sudo tee -a "$config_file" > /dev/null
@@ -41,6 +43,28 @@ if sudo systemctl restart watchdog; then
else else
echo "Failed to restart watchdog service." >> "$log_file" echo "Failed to restart watchdog service." >> "$log_file"
fi fi
}
# Version 1.1: # Main loop
# Created 2024 by Tim Eertmoed @ WiS IT-Solutions GmbH, Germany to work on Raspian as custom pxe init script. start_time=$(date +%s)
end_time=$((start_time + 300)) # 5 minutes in seconds
interval=30 # Initial interval of 30 seconds
while true; do
update_watchdog_config
current_time=$(date +%s)
# Check if 5 minutes have passed
if [ "$current_time" -ge "$end_time" ]; then
echo "5 minutes have passed. Stopping the watchdog service." >> "$log_file"
sudo systemctl stop watchdog
break # Exit the loop
fi
echo "Waiting for $interval seconds before checking for IP addresses again..." >> "$log_file"
sleep $interval
done
# Version 1.4:
# Created 2024 by Tim Eertmoed @ WiS IT-Solutions GmbH, Germany to work on Raspian as custom PXE init script.