Portál AbcLinuxu, 12. května 2025 12:44
ping server 2>/dev/null || shutdown now -h
každých 5 minut.
shutdown -h +5
a můžeš to zrušit shutdown -c
(asi by to chtělo mít trochu časovou rezervu)
#!/bin/bash count_time="300" sleep_time="1" check_ip="192.168.0.1" ping_timeout="1" debug="yes" if_debug(){ [[ ${debug} = "yes" ]] && echo "${1}" } check_ping(){ if_debug "Run check_ping" count=0 until [[ ${count} -gt ${count_time} ]]; do ping -c1 -W${ping_timeout} ${check_ip} &>/dev/null && ping_state="ok" || ping_state="bad" count="$((${count} + ${sleep_time}))" sleep ${sleep_time} [[ ${ping_state} = "ok" ]] && check_ping || if_debug "Ping BAD [${count}/${count_time}] before shutdown..." done } while :; do check_ping [[ ${ping_state} = "bad" ]] && ([[ ${debug} = "yes" ]] && echo "JenEcho: shutdown now" || pustit_shutdown_now) done
shutdown nowzapomel sem to prepsat kdyz tohle mel abych si nevypnul nb pri vyzkouseni skriptu zda "funguje" i bez debug yes
touch /tmp/alive while sleep 30; do timeout 20 ping -c 3 router && touch /tmp/alive [ `find /tmp/alive -mmin -5 | wc -l` -eq 0 ] && poweroff done(netestováno)
ping server -i 10 -c 1 -w 300 2>/dev/null || shutdown now -hToto bude po dobu 300 sekund posílat každých 10 sekund ping, dokud se nějaký nevrátí. Pokud žádný nepřijde, tak to vypne server. Pokud to chceš kontinuálně sledovat, dej to do cyklu
while sleep 10; do ping ... ; done
a ten dej do service souboru (pokud mášsystemd), ať se to spustí jako běžná služba.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.