Pomoc Kontrolowane wyłączenie Qnapa po zaniku zasilania

abgar

Nowy użytkownik
Noobie
10 Sierpień 2022
7
3
3
60
QNAP
HS-251
Ethernet
1 GbE
Mój Qnap jest zasilany z zasilacza buforowego 12V. Ogólnie działa to sprytnie przez kilka godzin. Jest jednak taki problem, że zasilania spada powoli aż wreszcie jest moment gdy dyski stają , elektronika jeszcze chodzi i robi sie kaszana.
Plan jest zatem taki żeby po zaniku zasilania głównego Qnap zrobił kontrolowany shut down.
Oczywiście nie ma żadnej łączności logicznej między zasilaczem a Qnapem
Pomysł mam zatem taki: Qnap pinguje sobie mój router domowy. Ping zanika i po powiedzmy jakimś czasie robi: wyłącz.
Ma ktoś pomysł czy to się da ogarnąć ?
Albo jakiś inny.
 
  • Haha
Reakcje: SiewcaRyżu
To jest ostre sztukowanie. Sam ping, niech zginie ci jakiś pakiet jeden i wyłączenie.
Nawet w takim rozwiązaniu rozważyłbym najmniejszy ups z USB, pod który podłączony będzie qnap.
 
Bash:
#!/bin/bash

ROUTER="192.168.1.1"
FAIL_COUNT=0
MAX_FAILS=10  # 10 minut (zakładając sprawdzanie co 1 minutę)
LOG_FILE="/var/log/ping_check.log"

while true; do
    TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S")

    if ! ping -c 1 -W 2 $ROUTER > /dev/null; then
        ((FAIL_COUNT++))
        echo "$TIMESTAMP - Brak odpowiedzi ($FAIL_COUNT/$MAX_FAILS)" | tee -a $LOG_FILE
    else
        FAIL_COUNT=0
        echo "$TIMESTAMP - Router odpowiada, licznik zresetowany" | tee -a $LOG_FILE
    fi

    if [ $FAIL_COUNT -ge $MAX_FAILS ]; then
        echo "$TIMESTAMP - Brak odpowiedzi przez 10 minut. Wyłączam komputer..." | tee -a $LOG_FILE
        shutdown -h now
    fi

    sleep 60  # Czekaj 1 minutę
done
 
  • Lubię to
Reakcje: abgar
#!/bin/bash

ROUTER="192.168.1.1"
FAIL_COUNT=0
MAX_FAILS=10 # 10 minut (zakładając sprawdzanie co 1 minutę)
LOG_FILE="/var/log/ping_check.log"

while true; do
TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S")

if ! ping -c 1 -W 2 $ROUTER > /dev/null; then
((FAIL_COUNT++))
echo "$TIMESTAMP - Brak odpowiedzi ($FAIL_COUNT/$MAX_FAILS)" | tee -a $LOG_FILE
else
FAIL_COUNT=0
echo "$TIMESTAMP - Router odpowiada, licznik zresetowany" | tee -a $LOG_FILE
fi

if [ $FAIL_COUNT -ge $MAX_FAILS ]; then
echo "$TIMESTAMP - Brak odpowiedzi przez 10 minut. Wyłączam komputer..." | tee -a $LOG_FILE
shutdown -h now
fi

sleep 60 # Czekaj 1 minutę
done
Naaaajs !!!