logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Bash - skrypt dający rzeczywistą liczbę maszyn podpiętą do interfejsu eth1

MES Mariusz 06 Maj 2014 08:56 1221 10
REKLAMA
  • #1 13574326
    MES Mariusz
    Poziom 36  
    Posty: 5452
    Pomógł: 8
    Ocena: 222
    Witam. Potrzebny skrypt dający poprawną liczbę maszyn podpietych do eth1 wyzwalany automatycznie gdy w sieci zostanie wykryta noaw maszyna (np. jakiś komputer zostanie włączony).

    Ktoś ma pomysł ?
  • REKLAMA
  • Pomocny post
    #2 13574525
    freetz_master
    Poziom 31  
    Posty: 1443
    Pomógł: 117
    Ocena: 156
    Nie za bardzo rozumiem, w jaki sposob mialbys byc informowany.
    Moje zalozenie: mozna sobie ta linijke np. wykonywac w superkarambie co sekunde i widac, jakie maszyny sa podlaczone do eth0 (u ciebie musisz oczywiscie dopasowac eth1 i zakres podsieci), nmap i awk musza byc zainstalowane.
    
    FutroS300:/home/techuser # nmap -sP -e eth0 192.168.2.0/24 |awk '/report/{print $5 $6}'
    192.168.2.1
    HTTP-Server.fritz.box(192.168.2.2)
    192.168.2.11
    ATOS.fritz.box(192.168.2.21)
    192.168.2.31
    DreamBox7025-unten.fritz.box(192.168.2.33)
    
  • REKLAMA
  • Pomocny post
    #3 13574733
    mbo
    VIP Zasłużony dla elektroda
    Posty: 19691
    Pomógł: 2333
    Ocena: 844
    Jeśli system robi za router to najprościej będzie odczytywać ARP.
  • REKLAMA
  • #4 13574759
    MES Mariusz
    Poziom 36  
    Posty: 5452
    Pomógł: 8
    Ocena: 222
    Cel - zliczenie maszyn - potencjalnych klientów internetu celem dynamicznego obliczenia i update-u parametru low (pasmo gwarantowane) w konfigu NiceShapera.

    Generalnie deklaruje się ten parametr na sztywno w konfigu (low), ale jeśli w sieci pojawią się kolejne maszyny, parametr ten traci sens. Stąd myśl, by po wykryciu nowej / kolejnej maszyny w sieci, wykonać podzielić maksymalnie dostępny download / upload i podzielić na ilość maszyn fizycznie aktywnych w sieci.

    Chodzi o to, by p owłączeniu ściągania / wysyłania na wszystkich dostępnych maszynach parametr low (pasmo gwarantowane) mogło być zapewnione.

    Krótko mówiąc jeśli w sieci zostanie wykryte włączone 10 maszyn, a maksymalny download = 10 Mbit / upload = 3 Mbit to pasmo gwarantowane wyniesie download = 1 Mbit / upload = 0,3 Mbit.

    Parametr ceil ustawi się na download 10 Mbit / upload 3Mbit i tym sposobem Niceshaper będzie przydzielał prędkości dla użytkowników od realnie policzonej na daną chwilę wartości minimalnej - gwarantowanej, do wartości maksylalnej w momencie gdy użytkownicy nie używają łącza.

    Chodzi o to, że zupełnie nie rozumiem zasadności sztywnego ustawiania parametru low w konfiguracji niceshapera (skoro tak na prawdę parametr ten zależy od maszyn włączonych w sieci). Więc może niech ten parametr ustawia się dynamicznie. Stąd myśl o stworzeniu skryptu, który policzy włączone maszyny, wyzwalany będzie podczas wykrycia nowej maszyny w sieci. Policzy parametr low, zrobi update konfigu Niceshapera a następnie zrestartuje niceshapera.

    Dodano po 42 [sekundy]:

    mbo napisał:
    Jeśli system robi za router to najprościej będzie odczytywać ARP.

    Tak. System robi za router.
  • Pomocny post
    #5 13574775
    mbo
    VIP Zasłużony dla elektroda
    Posty: 19691
    Pomógł: 2333
    Ocena: 844
    Nie wnikam czy ma to sens.
    Skoro robi za router to każda działająca stacja będzie w ARP - wystarczy odczytać i policzyć wiersze.
  • #6 13574807
    MES Mariusz
    Poziom 36  
    Posty: 5452
    Pomógł: 8
    Ocena: 222
    Czyli (upraszczając jeszcze bardziej) chodzi o policzenie (znając parametry łącza gwarantowane przez dostawcę) szybkości gwarantowaneh (download i upload) dla wszystkich maszyn występujących w sieci.
  • REKLAMA
  • #7 13574931
    mbo
    VIP Zasłużony dla elektroda
    Posty: 19691
    Pomógł: 2333
    Ocena: 844
    Ja pisałem tylko o zliczeniu ilości działających urządzeń.

    Co do Nicesharper'a to ile dobrze pamiętam, to poza gwarantowanymi parametrami, dzieli dostępną przepustowość na wszystkich klientów.
    Nie potrzeba więc modyfikować konfiguracji w taki sposób.
  • Pomocny post
    #8 13575071
    freetz_master
    Poziom 31  
    Posty: 1443
    Pomógł: 117
    Ocena: 156
    
    FutroS300:/home/techuser # arp -i eth0 |awk '/ether/{print "1"}'|awk '{sum+=$1}END{print sum}'
    2
    


    Dodam swoje 3 grosze:
    sprawa wcale nie jest taka trywialna jak sie wydaje. Ale uwazam caly koncept za troche problematyczny, bo:
    1. po co dzielic lacze na np.2 uzytkownikow, jezeli jeden cos sciaga, a drugi tylko "czyta" forum. Kazde pojawienie sie maszyny i np. synchronizacja czasu spowoduje dodanie maszyny do tabeli arp routera i obciecie pasma, co z praktycznego punktu widzenia jest bez sensu, ten ktory potrzebuje wiecej pasma ma zmniejszenie predkosci, a ktory tylko "czyta" ma dodane, choc nie potrzebuje.

    2. aspekty prawne. Nie chcialbym byc wlascicielem umowy z ISP. Co wtedy, gdy sasiad cos nawywija? Udowodnisz to? Bez profesjonalnego regulowania trafficu to prawie nie do udowodnienia. Wszystko logujesz na routerze? - Mnie by nikt na taki uklad nie namowil.

    3. O ile sie juz bardzo chce, to wzialbym na x ludzi jakiegos fritzboxa z dolnej polki, ~150PLN, gdzie wszystko jest regulowane dynamiczne i priorytety ustawia sie w zaleznosci od aplikacji i portu a nie uzytkownika - i to jest najbardziej efektowne wykorzystanie lacza.
  • #10 13576132
    MES Mariusz
    Poziom 36  
    Posty: 5452
    Pomógł: 8
    Ocena: 222
    freetz_master napisał:

    Dodam swoje 3 grosze:
    sprawa wcale nie jest taka trywialna jak sie wydaje. Ale uwazam caly koncept za troche problematyczny, bo:
    1. po co dzielic lacze na np.2 uzytkownikow, jezeli jeden cos sciaga, a drugi tylko "czyta" forum. Kazde pojawienie sie maszyny i np. synchronizacja czasu spowoduje dodanie maszyny do tabeli arp routera i obciecie pasma, co z praktycznego punktu widzenia jest bez sensu, ten ktory potrzebuje wiecej pasma ma zmniejszenie predkosci, a ktory tylko "czyta" ma dodane, choc nie potrzebuje.


    Niceshaper dzieli łącze dynamicznie wiec nie ma takich sytuacji. Jeśli ktoś czyta fomum cale pasmo jest twoje. Niceshaper dopilnuje jedynie byś swoim ściąganiem nie zablokował mi dostępu do forum. Czyli przydzielił mu pasmo gwarantowane. A gdy znudzi mu się forum i zacznie ściągać niceshaper podzieli łącze na 2 równe szybkości.

    Problem w tym ze ciągle nie mogę pojąć zasadności podawania w konfigu parametru low oznaczający najmniejszą możliwą prędkość do przydzielenia userowi gdy wszyscy intensywnie korzystają z internetu. Przecież ta prędkość powinna być wyliczana automatycznie i nigdy nie będzie większa niż szybkość łącza podzielona przez wszystkich korzystających. Więc po co deklarować parametr low skoro pewnych fizycznych możliwości i tak się nie przeskoczy?

    Pojąć nie mogę sensu definiowania parametru low w niceshaperze.
  • #11 13582812
    MES Mariusz
    Poziom 36  
    Posty: 5452
    Pomógł: 8
    Ocena: 222
    To chyba najszybsza i najlepsza droga:

    arp -i eth0 |grep -c "ether"

    Temat zamykam :-)

Podsumowanie tematu

✨ W dyskusji poruszono temat stworzenia skryptu w Bash, który automatycznie zliczałby liczbę urządzeń podłączonych do interfejsu eth1 w momencie wykrycia nowej maszyny w sieci. Uczestnicy sugerowali różne metody, w tym wykorzystanie narzędzi takich jak nmap i arp do monitorowania aktywnych urządzeń. Podkreślono, że w przypadku działania jako router, można odczytać tablicę ARP, aby zliczyć aktywne stacje. Wskazano również na potrzebę dynamicznego obliczania parametrów pasma gwarantowanego w oparciu o liczbę aktywnych urządzeń, co ma na celu optymalne przydzielanie przepustowości. Zwrócono uwagę na aspekty praktyczne i prawne związane z zarządzaniem ruchem w sieci.
Wygenerowane przez model językowy.
REKLAMA