126

Odp: Luci- blokada dostępu do internetu w określonym czasie

To też jest jakieś rozwiązanie.

Czy dobrze dodałem drugiego HOSTA?

#!/bin/sh
    HOST="AC:FD:CE:EA:73:7E"
    HOST1="B8:3B:CC:51:95:6B" 

    # limit w minutach
    LIMIT=5

    F=/tmp/timequota-$HOST
    if [ -e $F ]; then
        USEDTIME=$(cat $F)
    else
        USEDTIME=0
    fi

    T=$(iw dev phy0-ap0 station dump | grep -i -A 1 $HOST | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy1-ap0 station dump | grep -i -A 1 $HOST | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy2-ap0 station dump | grep -i -A 1 $HOST | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy3-ap0 station dump | grep -i -A 1 $HOST | awk '/inactive time/{print $3}')

    [ -z "$T" ] && T=$(iw dev phy0-ap0 station dump | grep -i -A 1 $HOST1 | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy1-ap0 station dump | grep -i -A 1 $HOST1 | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy2-ap0 station dump | grep -i -A 1 $HOST1 | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy3-ap0 station dump | grep -i -A 1 $HOST1 | awk '/inactive time/{print $3}')


    [ -z "$T" ] && exit 0
    if [ $T -lt 60000 ]; then
        USEDTIME=$((USEDTIME + 1))
        echo $USEDTIME > $F
    fi
    if [ $USEDTIME -gt $LIMIT ]; then
        if [ "x$(uci -q get firewall.mac${HOST//:/}.enabled)" != "x1" ]; then 
            uci set firewall.mac${HOST//:/}=rule
            uci set firewall.mac${HOST//:/}.src='lan'
            uci set firewall.mac${HOST//:/}.dest='wan'
            uci set firewall.mac${HOST//:/}.src_mac=$HOST
            uci set firewall.mac${HOST//:/}.target='REJECT'
            uci set firewall.mac${HOST//:/}.enabled=1

       [ "x$(uci -q get firewall.mac${HOST1//:/}.enabled)" != "x1" ]; then 
            uci set firewall.mac${HOST1//:/}=rule
            uci set firewall.mac${HOST1//:/}.src='lan'
            uci set firewall.mac${HOST1//:/}.dest='wan'
            uci set firewall.mac${HOST1//:/}.src_mac=$HOST1
            uci set firewall.mac${HOST1//:/}.target='REJECT'
            uci set firewall.mac${HOST1//:/}.enabled=1


            uci commit firewall
            /etc/init.d/firewall restart
        fi
    fi
    exit 0

127

Odp: Luci- blokada dostępu do internetu w określonym czasie

nie, brakuje fi dla pierwszego uci, brakuje if przed drugim.

Zakładam że to ma działać tak że jeżeli coś jeden jest podłączony to powoduje zużycie czasu.

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

128

Odp: Luci- blokada dostępu do internetu w określonym czasie

Dokładnie o to mi chodzi, że nie ważne które urządzenie jest połączone z wifi to zużywa czas

129

Odp: Luci- blokada dostępu do internetu w określonym czasie

Jeszcze jest coś nie tak bo cały czas siedzi na kompie

#!/bin/sh
    HOST="AC:FD:CE:EA:73:7E"
    HOST1="B8:3B:CC:51:95:6B" 

    # limit w minutach
    LIMIT=5

    F=/tmp/timequota-$HOST
    if [ -e $F ]; then
        USEDTIME=$(cat $F)
    else
        USEDTIME=0
    fi

    T=$(iw dev phy0-ap0 station dump | grep -i -A 1 $HOST | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy1-ap0 station dump | grep -i -A 1 $HOST | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy2-ap0 station dump | grep -i -A 1 $HOST | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy3-ap0 station dump | grep -i -A 1 $HOST | awk '/inactive time/{print $3}')

    [ -z "$T" ] && T=$(iw dev phy0-ap0 station dump | grep -i -A 1 $HOST1 | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy1-ap0 station dump | grep -i -A 1 $HOST1 | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy2-ap0 station dump | grep -i -A 1 $HOST1 | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy3-ap0 station dump | grep -i -A 1 $HOST1 | awk '/inactive time/{print $3}')


    [ -z "$T" ] && exit 0
    if [ $T -lt 60000 ]; then
        USEDTIME=$((USEDTIME + 1))
        echo $USEDTIME > $F
    fi
    if [ $USEDTIME -gt $LIMIT ]; then
        if [ "x$(uci -q get firewall.mac${HOST//:/}.enabled)" != "x1" ]; then 
            uci set firewall.mac${HOST//:/}=rule
            uci set firewall.mac${HOST//:/}.src='lan'
            uci set firewall.mac${HOST//:/}.dest='wan'
            uci set firewall.mac${HOST//:/}.src_mac=$HOST
            uci set firewall.mac${HOST//:/}.target='REJECT'
            uci set firewall.mac${HOST//:/}.enabled=1
        fi
        if [ "x$(uci -q get firewall.mac${HOST1//:/}.enabled)" != "x1" ]; then 
            uci set firewall.mac${HOST1//:/}=rule
            uci set firewall.mac${HOST1//:/}.src='lan'
            uci set firewall.mac${HOST1//:/}.dest='wan'
            uci set firewall.mac${HOST1//:/}.src_mac=$HOST1
            uci set firewall.mac${HOST1//:/}.target='REJECT'
            uci set firewall.mac${HOST1//:/}.enabled=1


            uci commit firewall
            /etc/init.d/firewall restart
        fi
    fi
    exit 0

130

Odp: Luci- blokada dostępu do internetu w określonym czasie

uci commit firewall
      /etc/init.d/firewall restart

Musi być poza fi bo inaczej nie przeładujesz firewalla jak pierwszy mac jest podłączony.

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

131

Odp: Luci- blokada dostępu do internetu w określonym czasie

Witam, testowałem  ten skrypt na swoim telefonie i dopisałem komputer dziecka. Tak pokombinowałem że zamiast jego komputer zablokować to zablokowałem swój telefon że cały czas mam blokadę.
Co może być źle w tym skrypcie?

#!/bin/sh
    HOST="AC:FD:CE:EA:73:7E"
    HOST1="B8:3B:CC:51:95:6B" 

    # limit w minutach
    LIMIT=5

    F=/tmp/timequota-$HOST
    if [ -e $F ]; then
        USEDTIME=$(cat $F)
    else
        USEDTIME=0
    fi

    T=$(iw dev phy0-ap0 station dump | grep -i -A 1 $HOST | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy1-ap0 station dump | grep -i -A 1 $HOST | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy2-ap0 station dump | grep -i -A 1 $HOST | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy3-ap0 station dump | grep -i -A 1 $HOST | awk '/inactive time/{print $3}')

    [ -z "$T" ] && T=$(iw dev phy0-ap0 station dump | grep -i -A 1 $HOST1 | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy1-ap0 station dump | grep -i -A 1 $HOST1 | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy2-ap0 station dump | grep -i -A 1 $HOST1 | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy3-ap0 station dump | grep -i -A 1 $HOST1 | awk '/inactive time/{print $3}')


    [ -z "$T" ] && exit 0
    if [ $T -lt 60000 ]; then
        USEDTIME=$((USEDTIME + 1))
        echo $USEDTIME > $F
    fi
    if [ $USEDTIME -gt $LIMIT ]; then
        if [ "x$(uci -q get firewall.mac${HOST//:/}.enabled)" != "x1" ]; then 
            uci set firewall.mac${HOST//:/}=rule
            uci set firewall.mac${HOST//:/}.src='lan'
            uci set firewall.mac${HOST//:/}.dest='wan'
            uci set firewall.mac${HOST//:/}.src_mac=$HOST
            uci set firewall.mac${HOST//:/}.target='REJECT'
            uci set firewall.mac${HOST//:/}.enabled=1
        fi
        if [ "x$(uci -q get firewall.mac${HOST1//:/}.enabled)" != "x1" ]; then 
            uci set firewall.mac${HOST1//:/}=rule
            uci set firewall.mac${HOST1//:/}.src='lan'
            uci set firewall.mac${HOST1//:/}.dest='wan'
            uci set firewall.mac${HOST1//:/}.src_mac=$HOST1
            uci set firewall.mac${HOST1//:/}.target='REJECT'
            uci set firewall.mac${HOST1//:/}.enabled=1
            fi
    fi
            uci commit firewall
            /etc/init.d/firewall restart
        
    exit 0

132

Odp: Luci- blokada dostępu do internetu w określonym czasie

W /etc/config/firewall masz wpisaną blokadę na swój adres mac a nie wyłączyłeś jej o północy w cronie.

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

133

Odp: Luci- blokada dostępu do internetu w określonym czasie

Sprawdzę to wieczorem, ale ja testowałem to wczoraj przed 12 w nocy. Dodawałem czas żebym mógł korzystać z internetu i to nic nie pomogło

134

Odp: Luci- blokada dostępu do internetu w określonym czasie

Skrypt jest tylko tworem tworzącym regułę w firewallu. Jeżeli masz aktywną blokadę to znaczy że masz wpis w firewallu i tyle.

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

135

Odp: Luci- blokada dostępu do internetu w określonym czasie

Sprawdzę to, spróbuję zdjąć blokadę tym wpisem

# echo 0 > "/tmp/timequota-01:02:03:04:05:06"
    # uci set firewall.mac010203040506.enabled=0
    # uci commit firewall
    # /etc/init.d/firewall restart

136

Odp: Luci- blokada dostępu do internetu w określonym czasie

Ale zmieniles mac w obu miejscach na swój?

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

137 (edytowany przez marek445 2023-11-17 10:27:33)

Odp: Luci- blokada dostępu do internetu w określonym czasie

Tak zmieniłem, jak będę w domu to wyślę obydwa skrypty i zetkniesz wpisy czy są prawidłowe
A tu w wpisie który usuwa blokadę to wiem że muszę zmienić w dwóch miejscach, ale to dopiero sprawdzę jak wrócę do domu wieczorem.

138

Odp: Luci- blokada dostępu do internetu w określonym czasie

Mam jeszcze jedno pytanie. Czy jak zmieniam wpisy w skrypcie np. zmieniam limit albo dopisuje hosta to muszę jakoś zrestartować ten skrypt?

139

Odp: Luci- blokada dostępu do internetu w określonym czasie

On oddziałuje na firewalla. Jeżeli coś zmieniasz to uruchom skrypt, skasuj w /tmp liczniki, przeładuj firewalla, zależy co tam robisz w danym momencie.

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

140

Odp: Luci- blokada dostępu do internetu w określonym czasie

Jedyne co będę robił to albo zmieniał limit czasu albo dodawał hosty.

141

Odp: Luci- blokada dostępu do internetu w określonym czasie

Jeżeli dodajesz hosty to cron za max minute to wykona sam, więc nic dodatkowo. Jak zmieniasz limity to już zależy co i która stronę.

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

142

Odp: Luci- blokada dostępu do internetu w określonym czasie

Np. jak bym chciał zmienić że 120 min na 180 min albo jak bym chciał zmienić to odwrotnie z 180 na 120

143

Odp: Luci- blokada dostępu do internetu w określonym czasie

W obu przypadkach zmiana w skrypcie, sprawdzenie i ew przeładowanie firewalla oraz ew sprawdzenie liczników w plikach w /tmp

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

144 (edytowany przez marek445 2023-11-17 18:16:11)

Odp: Luci- blokada dostępu do internetu w określonym czasie

odblokowałem swój telefon, ale skrypt nie blokuje hostow.

przesyłam wpisy w skryptach.
timequotas.sh

#!/bin/sh
    HOST="B8:3B:CC:51:95:6B" 
    HOST1="30:AB:6A:4C:13:54" 

    # limit w minutach
    LIMIT=5

    F=/tmp/timequota-$HOST
    if [ -e $F ]; then
        USEDTIME=$(cat $F)
    else
        USEDTIME=0
    fi

    T=$(iw dev phy0-ap0 station dump | grep -i -A 1 $HOST | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy1-ap0 station dump | grep -i -A 1 $HOST | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy2-ap0 station dump | grep -i -A 1 $HOST | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy3-ap0 station dump | grep -i -A 1 $HOST | awk '/inactive time/{print $3}')

    [ -z "$T" ] && T=$(iw dev phy0-ap0 station dump | grep -i -A 1 $HOST1 | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy1-ap0 station dump | grep -i -A 1 $HOST1 | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy2-ap0 station dump | grep -i -A 1 $HOST1 | awk '/inactive time/{print $3}')
    [ -z "$T" ] && T=$(iw dev phy3-ap0 station dump | grep -i -A 1 $HOST1 | awk '/inactive time/{print $3}')


    [ -z "$T" ] && exit 0
    if [ $T -lt 60000 ]; then
        USEDTIME=$((USEDTIME + 1))
        echo $USEDTIME > $F
    fi
    if [ $USEDTIME -gt $LIMIT ]; then
        if [ "x$(uci -q get firewall.mac${HOST//:/}.enabled)" != "x1" ]; then 
            uci set firewall.mac${HOST//:/}=rule
            uci set firewall.mac${HOST//:/}.src='lan'
            uci set firewall.mac${HOST//:/}.dest='wan'
            uci set firewall.mac${HOST//:/}.src_mac=$HOST
            uci set firewall.mac${HOST//:/}.target='REJECT'
            uci set firewall.mac${HOST//:/}.enabled=1
        fi
        if [ $USEDTIME -gt $LIMIT ]; then
        if [ "x$(uci -q get firewall.mac${HOST1//:/}.enabled)" != "x1" ]; then 
            uci set firewall.mac${HOST1//:/}=rule
            uci set firewall.mac${HOST1//:/}.src='lan'
            uci set firewall.mac${HOST1//:/}.dest='wan'
            uci set firewall.mac${HOST1//:/}.src_mac=$HOST1
            uci set firewall.mac${HOST1//:/}.target='REJECT'
            uci set firewall.mac${HOST1//:/}.enabled=1

        fi
   fi
            uci commit firewall
            /etc/init.d/firewall restart
    exit 0

timequotas-clean.sh

#!/bin/sh
    
    HOST="30:AB:6A:4C:13:54"
    HOST1="B8:3B:CC:51:95:6B"
    echo 0 > /tmp/timequota-$HOST
    uci set firewall.mac${HOST//:/}.enabled=0
    uci set firewall.mac${HOST1/:/}.enabled=0
    uci commit firewall
    /etc/init.d/firewall restart
    exit 0

W timequota-B8:3B:CC:51:95:6B czas leci, już jest 70 min i dalej moge korzystać z neta. Limit ustawiony jest dla testów 5 min.

145

Odp: Luci- blokada dostępu do internetu w określonym czasie

Masz błąd w skrypcie: drugie if [ $USEDTIME -gt $LIMIT ]; then jest zbędne.

Czy ty w ogóle uruchamiasz ten skrypt żeby zobaczyć czy działa poprawnie czy się wywala?

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

146

Odp: Luci- blokada dostępu do internetu w określonym czasie

Na poczatku z jednym hostem działało to pięknie tylko musiałem inne radia dodać. Może ja nie faktycznie nie uruchamiam tego skryptu. W jaki sposób uruchomić ten skrypt?

147

Odp: Luci- blokada dostępu do internetu w określonym czasie

Normalnie, wpisz

/usr/bin/timequotas.sh

Jeżeli tam go umieściłeś.

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

148

Odp: Luci- blokada dostępu do internetu w określonym czasie

tak zrobiłem i działa, blokuje obydwa hosty

149

Odp: Luci- blokada dostępu do internetu w określonym czasie

Więc co ci nie działa? Crona źle zrobiłeś?

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

150 (edytowany przez marek445 2023-11-17 19:09:18)

Odp: Luci- blokada dostępu do internetu w określonym czasie

Już zadziałału usunąłem drugie if [ $USEDTIME -gt $LIMIT ]; then
teraz jak chce zdjąć blokadę wpisem:
/usr/bin/timequotas-clean.sh to wyskakuje mi coś takiego:

root@OpenWrt:~# /usr/bin/timequotas-clean.sh
uci: Invalid argument
Section macB83BCC51956B is disabled, ignoring section

I teraz nie wiem czy o 24:00 zostanie zdjęta blokada.