03 Maja 2024 18:26:30
Nawigacja
· Strona Główna
· Forum

· Tomato by Shibby
· FreshTomato


Wątki na forum
Najnowsze dyskusje
· nju swiatło pytania
· konfiguracja router ...
· Asus TUF-AX3000_V2 p...
· Jaki router kupić? ...
· Szukam zaproszenia n...
· [Howto] Xpenology na...
· dodatkowe złącza s...
· RT-N18U - nie można...
· [MOD] Tomato64 (x86-64)
· Firewall nie zawsze ...
· [MOD] FreshTomato-AR...
· Optware na CIFS
· RT-AX56U - Status kl...
· [MOD] FreshTomato-MI...
· Multiroom N z wykorz...
· [S] Asus RT-AC68U E1
· [S] ASUS RT-AC68U
· Rozłączanie klient...
· serwer VPN za wan'em
· Przejscie z dyndns f...
Najpopularniejsze obecnie wątki
· konfiguracja rout... [10]
· nju swiatło pytania [4]
Ankieta
Jaki procesor posiada twój router?

Broadcom MIPSEL
Broadcom MIPSEL
36% [151 głosów]

Broadcom ARM
Broadcom ARM
52% [216 głosów]

Atheros
Atheros
5% [22 głosów]

Marvell
Marvell
1% [4 głosów]

Ralink
Ralink
1% [3 głosów]

Intel/AMD/VIA
Intel/AMD/VIA
1% [5 głosów]

Żaden z powyższych
Żaden z powyższych
4% [15 głosów]

Ogółem głosów: 416
Musisz zalogować się, aby móc zagłosować.
Rozpoczęto: 02/02/2015 09:38
Twoje IP
3.19.29.89
Zobacz wątek
OpenLinksys » :: PORTAL :: » Tutoriale
 Drukuj wątek
Skrypt do kontroli QoS i Limitera
LivingXadrian
Witam. Myślę że jest to dobry dział aby zaprezentować swój skrypt.

Ostatnio pojawiła się u mnie potrzeba:
  • kontroli QoS'a zależnie od godziny,
  • kontroli limitera pasma zależnie od ilości podłączonych użytkowników.


Więc napisałem sobie następujący skrypt którym zamierzam się podzielić.

#!/bin/sh

QosApply() {
    nvram commit
    service qos restart
    sleep 1
}

LimiterON() {
    nvram set new_qoslimit_enable=1
    QosApply
}

LimiterOFF() {
    nvram set new_qoslimit_enable=0
    QosApply
}

QosON() {
    nvram set qos_enable=1
    QosApply
}

QosOFF() {
    nvram set qos_enable=0
    QosApply
}

TestIP() {
    # Początkowa liczba aktywnych hostów wynosi 0
    i=0

    # Przeszukanie wszystkich adresów IP z zakresu 192.168.1.xxx na podstawie ARP
    for WERS in `arp -a | grep -Eo '192\.168\.1\.[0-9]{1,3}'`; do
        if [ `arping $WERS -f -I br0 -c 3 -w 3 | grep -Ec '^Unicast'` = 1 ] then
            # jeżeli host odpowiada to inkrementacja zmiennej 'i'
            i=`expr $i + 1`
        fi
    done

    # Funkcja wyświetla liczbę aktywnych hostów
    echo $i
}

# Gdy jest jeden lub mniej uzytkowników limit pasma jest wyłączony
if [ `TestIP` -le 1 ] then
    if [ `nvram get new_qoslimit_enable` = 1 ] then
        LimiterOFF
    fi
# Limit pasma zostaje włączony gdy jest przybajmniej dwóch użytkowników
else
    if [ `nvram get new_qoslimit_enable` = 0 ] then
        LimiterON
    fi
fi

# Od 00:00 do 09:59 QoS OFF (mozna ściągać torrenty)
if [ `date +%H` -le 09 ] then
    if [ `nvram get qos_enable` = 1 ] then
        QosOFF
    fi
# Od 10:00 do 23:59 QoS ON (torrenty są ograniczone)
elif [ `date +%H` -ge 10 ] then
    if [ `nvram get qos_enable` = 0 ] then
        QosON
    fi
fi


Jak można zauważyć skrypt jest podzielony na trzy sekcje:
  • 1) Definicje funkcji.
  • 2) Testowanie użytkowników.
  • 3) Sprawdzanie godziny.


Więc jeżeli ktoś będzie potrzebował tylko jednej z dwóch funkcjonalności skryptu to z łatwością sobie wybierze potrzebne elementy.

Jak uruchomić skrypt?
  • 1) Wejdź do panelu administracyjnego TOMATO
  • 2) Przejdź do "Administracja" >> "Harmonogram"
  • 3) W obszarze "Własne 1" zaznacz ptaszkiem "Włączony"
  • 4) Ustaw "Czas" na "Co 5 minut"
  • 5) W wierszu "Dni" zaznacz ptaszkiem "Codziennie"
  • 6) Do pola "Polecenie" wklej skrypt, możesz przedtem usunąć z skryptu komentarze.
  • 7) Na dole strony kliknij przycisk "Zapisz"
  • 8) GOTOWE :)


U mnie skrypt działa na:
  • Sprzęt "Netgear WNR3500L/U/v2"
  • Oprogramowanie "Tomato PL 1.28.0000 MIPSR2-108-PL K26 USB VPN"

Testuje go od poniedziałku (30.09.2013) i obecnie nie sprawia żadnego problemu.
Chcę również oznajmić że nie jestem specjalistą od pisania w powłoce bash, shell wiec jeżeli ktoś uważa że można to zrobić inaczej, to bardzo proszę opisać swój sposób.
Bardzo chętnie nauczę się czegoś nowego, jak i zapewne inny użytkownicy również.
 
belliash
Nie wiem czy ktos Ci mowil, ale QOS i BW Limiter to nie to samo i ogolnie nie powinno sie tego laczyc, tj. uzywac obu. Poza tym, to co pokazales mozna zrobic samym BW Limiterem ustawiajac odpowiednio rate i ceil tak aby 1 uzytkownik mogl wysycic cale lacze, ale gdy bedzie ich wiecej, to przepustowosc zostanie podzielona miedzy nich.
Linksys WRT1900AC: OpenWrt 19.07.2
Jetway JC390F841AA34B: OpenWrt 19.07.2
 
shibby
jw. BW Limiter i QoS nie mogą pracować jednocześnie. Przynajmniej nie na moim tomato.

Tomato od Toastmana używa innej zasady działania BW Limitera (podział przez imq tylko dla br0) i tam qos i bw limiter może działać jednocześnie.

Victek ma obecnie moją wersję bw limitera więc u niego też dwa jednocześnie pracować nie mogą.
Proxmox VE: i7-7700T, 64GB RAM, 3x2TB SSD, 1x1TB SSD, 512GB NVMe, Intel X710-DA2 SFP+
VM Router: OpenWRT 22.03.4
VM NAS: Synology DS920+
VM VPS: Debian, WWW, Home Assistant
Switch: Netgear MS510TXPP
Switch: Ubiquiti USW-Flex-mini - szt. 2
Wi-Fi: Ubiquiti U6-Lite - szt. 2
 
LivingXadrian
Dzięki za info.
Nie wiedziałem wcześniej że QoS i BW Limiter nie mogą działać razem.
U mnie są włączone oba na raz i nie wiem jakich skutków się mogłem spodziewać - nie zauważyłem nieprawidłowej pracy, jak dla mnie wszytko działało OK - to znaczy internet na komputerach działał.
Przyglądnę się teraz temu bardziej, poczytam i po testuję u siebie.
Z twoim sposobem belliash się zgodzę i też to przetestuję.
A ten skrypt to pierwsze co mi do głowy przyszło, no i odświeżyłem sobie znajomość basha, shella bo rzadko z tego środowiska mam okazję korzystać.
 
shibby
bo będzie działał net, po prostu jedna z usług (przeważnie bw limiter) przestaje działać.
Proxmox VE: i7-7700T, 64GB RAM, 3x2TB SSD, 1x1TB SSD, 512GB NVMe, Intel X710-DA2 SFP+
VM Router: OpenWRT 22.03.4
VM NAS: Synology DS920+
VM VPS: Debian, WWW, Home Assistant
Switch: Netgear MS510TXPP
Switch: Ubiquiti USW-Flex-mini - szt. 2
Wi-Fi: Ubiquiti U6-Lite - szt. 2
 
Przejdź do forum
Zaloguj
Wprowadź adres e-mail lub nazwę użytkownika

Hasło



Nie masz jeszcze konta? Zarejestruj się.

Zapomniałeś/aś hasła?
Aktualnie online
· Gości online: 21

· Użytkowników online: 0

· Łącznie użytkowników: 24,115
· Najnowszy użytkownik: Ja
Czat
Musisz się zalogować, aby opublikować wiadomość.

Adooni
26-04-2024 14:41
jaki router RMerlin nie pociagne, tomato/ openwrt tak non hilink,

tamtosiamto
23-04-2024 12:35
modem bez smilocka?

man1
22-04-2024 23:27
Czy próbował ktoś uzywac karty voice (z nolimit GB) od tmobile w modemie /routerze? Da się jakoś to zrobić? Bo u mnie neta brak. E3372 Sad

tamtosiamto
31-03-2024 12:54
Wesolego jajka wszytskim forumowiczom Grin

tamtosiamto
28-03-2024 23:24
tak, tak zgadza sie, ale ja pytam o wykluczenie noda na guest network w first set, i to nie dziala

Adooni
24-03-2024 13:16
Guest network is currently designed to allow the first set of each band (2.4G, 5G, 5G-1) available to the AiMesh node

tamtosiamto
24-03-2024 03:03
ale w 1 jest opcja do wyboru - dla calej sieci albo rutera only i wlasnie o tym mowie, ze nie dziala

Adooni
23-03-2024 16:31
w dokumencie asusa jest ze wlasnie dla 1 ma dzialac na nodach tez

tamtosiamto
23-03-2024 15:39
tak, ale nie zmienia to faktu, ze w pierwszej nie dziala wylaczanie aimesh dla goscinnej( a powinno), czyli jest jakis bug. Mam start soft, bo to dsl-ac68 ktory nie jest juz updateowany

Adooni
22-03-2024 18:07
nie, 1 wsza bedzie wszedzie trzeba 2ga zrobic dla kazdego pasma te nie sa przenoszone

71,545,391 unikalnych wizyt