1

Temat: Skrypt nie działa

Dzień dobry.
Mam urządzenie (openDTU), któremu raz na jakiś czas zawiesza się interfejs wifi (przestaje działać jego strona www, ale reszta działa). Ostatnio odkryłem, że w luci Sieć->Wi-Fi z listy połączonych urządzeń należy rozłączyć openDTU i po kilku sekundach następuje połączenie i znowu strona urządzenia działa. Wpadłem na genialny pomysł, aby skrypt co 5 min robił ping i w przypadku braku odpowiedzi rozłączał urządzenie. Niestety coś nie działa.
Skrypt:

#!/bin/sh
# --- USTAWIENIA UŻYTKOWNIKA ---
IP_DTU="192.168.1.222"
MAC_DTU="00:70:07:17:cd:38"
INT_WIFI="radio0"
if iw dev "$INT_WIFI" station dump | grep -i -q "$MAC_DTU"; then
if ! ping -c 3 -W 2 "$IP_DTU" > /dev/null 2>&1; then
logger -t "OpenDTU" "Brak odpowiedzi od OpenDTU ($IP_DTU). Rozłączanie stacji..."
iw dev "$INT_WIFI" station del "$MAC_DTU"
fi
fi

cron:

*/5 * * * * /usr/bin/check_opendtu.sh

Jakieś pomysły? SKrypt jest wykonywany co 5 min, ale nie jest rozłączane urządzenie.

2 (edytowany przez Cezary 2026-08-03 14:03:30)

Odp: Skrypt nie działa

Zrób ręcznie

sh -x /usr/bin/check_opendtu.sh

i sprawdź co się wykonuje a co nie. Jeżeli to tylko rozłączenie klienta to zrób to systemowo

ubus call hostapd.phy0-ap0 del_client "{'addr':'$MAC','reason':5,'deauth':false,'ban_time':0}"'

Gdzie mac to zmień ma mac a phy0-ap0 zmień na interfejs na którym jest podłączony.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Skrypt nie działa

IP_DTU="192.168.1.222"
MAC_DTU="00:70:07:17:cd:38"
INT_WIFI="radio0"

if iw dev $INT_WIFI station dump | grep -i -q "$MAC_DTU" ; then
    if ! ping -c 3 -W 2 "$IP_DTU" > /dev/null 2>&1; then
        logger -t OpenDTU "Brak odpowiedzi od OpenDTU ($IP_DTU). Rozłączanie stacji..."
        ubus call hostapd.phy0-ap0 del_client "{\"addr\":\"$MAC_DTU\",\"reason\":5,\"deauth\":false,\"ban_time\":0}"
    fi
fi

root@R6350:~# sh -x /usr/bin/check_opendtu.sh
+ IP_DTU=192.168.1.222
+ MAC_DTU=00:70:07:17:cd:38
+ INT_WIFI=radio0
+ iw dev radio0 station dump
+ grep -i -q 00:70:07:17:cd:38
command failed: No such device (-19)

4

Odp: Skrypt nie działa

Nie radio0. phy0-ap0, jeszcze zależy co używasz i w jakiej wersji.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5 (edytowany przez qwerty 2026-08-03 16:24:28)

Odp: Skrypt nie działa

Ok poszło na:

IP_DTU="192.168.1.222"
MAC_DTU="00:70:07:17:cd:38"
INT_WIFI="phy0-ap0"

if iw dev $INT_WIFI station dump | grep -i -q "$MAC_DTU" ; then
    if ! ping -c 3 -W 2 "$IP_DTU" > /dev/null 2>&1; then
        logger -t OpenDTU "Brak odpowiedzi od OpenDTU ($IP_DTU). Rozłączanie stacji..."
        ubus call hostapd.phy0-ap0 del_client "{\"addr\":\"$MAC_DTU\",\"reason\":5,\"deauth\":false,\"ban_time\":0}"
    fi
fi

Działa też:

IP_DTU="192.168.1.222"
MAC_DTU="00:70:07:17:cd:38"
INT_WIFI="phy0-ap0"
if /usr/sbin/iw dev "$INT_WIFI" station get "$MAC_DTU" >/dev/null 2>&1; then
    if ! /bin/ping -c 2 -W 1 "$IP_DTU" >/dev/null 2>&1; then
        /usr/bin/logger -t OpenDTU "Brak odpowiedzi od $IP_DTU. Resetowanie połączenia."
        /sbin/ubus call hostapd."$INT_WIFI" del_client "{\"addr\":\"$MAC_DTU\",\"reason\":5,\"deauth\":false,\"ban_time\":0}"
    fi
fi