1 (edytowany przez Przmus 2013-06-05 20:42:58)

Temat: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

Witam.
Na oryginalnym oprogramowaniu do TL-MR3420 dostępna była opcja automatycznego zrywania połączenia przez modem (3G), podczas nieaktywności (czyli opcja: "Max idle time: 10 minutes").
Czy istnieje jakiś plugin (lub inny sposób), umożliwiający to samo na Gargoyle?

Jeśli nie, to czy istnieje jakiś dodatkowy plugin, do zarządzania połączeniem 3G (czyli opcje: rozłącz, połącz), albo umożliwiające stworzenie harmonogramu o których godzinach połączenie Internetowe ma zostać przerwane? Potrzebne jest mi to głownie ze względu na "szczęśliwe godziny" w Orange, a z doświadczenia wiem, że Orange potrafi błędnie taryfikować gdy po 00:00 i przed 8:00 połączenie nie zostanie zrestartowane.

EDIT:
Nie chodzi mi o wyłączanie WiFi (bo to wiem jak ustawić), ale o zerwanie połączenia z modemem.

2

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

Masz przecież standardowo to w gargoyle - konfiguracja/montor połączenia.

Co do godzin - po prostu do crona dodajesz rozłączenie/połączenie. Poczytaj trochę na eko.one.pl o cronie.

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

3

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

Masz przecież standardowo to w gargoyle - konfiguracja/montor połączenia.

OK, ale na jakiej zasadzie to działa? To sprawdza, czy połączenie WAN (Modem 3G/LTE) działa poprawnie, czy modem się nie zawiesił, zgadza się? Ale nie rozłączy chyba Internetu, jeśli do routera nie będzie podłączonych (przez WiFi) żadnych urządzeń?

Co do godzin - po prostu do crona dodajesz rozłączenie/połączenie. Poczytaj trochę na eko.one.pl o cronie.

Dzięki, właśnie przeczytałem i mam pytanie: Jaka komenda zrestartuje połączenie WAN?

4

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

Sprawdza czy są pingi do podanego hosta, jak nie to wykonuje daną akcję - rozłącza wan, restart routera lub coś innego.

ifup wan ponownie rozłącza i podnosi połączenie wan.

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

5

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

Monitor połączenia (to to samo co ping watchdog?) też rozłącza, czy służy raczej do wznowienia po rozłączeniu?

Bo tego właśnie brakuje w poprzednich wydaniach, więc - oczywiście w oparciu o rozmaitości z eko.one.pl - zastąpiłem fabryczne rozłączanie nieaktywnego 3g przez mniej więcej taki skrypt wyzwalany co 30 min - korzystam tylko z wifi, więc wyznacznikiem zasadności połączenia 3g jest to, czy cokolwiek z wifi korzysta... (dla radia mr3420, inne sposoby na listę podłączonych do innych routerów też na tutejszych faq)

#!/bin/sh

CNTCONN=1

[ `iw dev wlan0 station dump | grep Station | wc -l` -lt $CNTCONN ] || return
[ "x"$(ifconfig | grep 3g-wan | grep -c "^") == "x1" ] || return

    uci set network.wan.auto=0
    (ifdown wan)

    logger -t wakeup-standby no clients, 3g inactivity standby

exit 0

a wznowienie, po podłączeniu jakiegokolwiek klienta

#!/bin/sh

CNTCONN=1
 
[ `iw dev wlan0 station dump | grep Station | wc -l` -lt $CNTCONN ] && return
[ "x"$(uci -q get network.wan.auto) == "x0" ] || return
[ "x"$(ifconfig | grep 3g-wan | grep -c "^") == "x1" ] && return

    (ifup wan)
    logger -t wakeup-standby client connected, 3g wake up
    sleep 30; uci set network.wan.auto=1

exit 0

Nie jest to oczywiście takie wysublimowane jak fabryczne, które rozłącza po np. 30 minutach od ostatniej aktywności, ale lepszy rydz niż nic : )

6

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

Monitor połączenia to moja polska nazwa na ping watchdog. Służy do wznowienia połączenia. A w poprzednich wydaniach miałeś 3gtester uruchamiany co 3min który robił dokładnie restart wanu przy braku odpowiedzi.

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

7

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

Jasne, ale zdaje się, że Przmusowi chodziło o to, żeby celowo rozłączać, nie tylko wznawiać : )
Świadomość istnienia 3gtestera odzwierciedlają też skrypty, żeby się nie dobrał do tak zamkniętego łącza.

8

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

ifup wan ponownie rozłącza i podnosi połączenie wan.

Dzięki!

dopsz, z chęcią wykorzystam podany przez Ciebie skrypt. Możesz mi jeszcze powiedzieć, jak mam to wprowadzić przez PuTTY? Czy mam to po prostu wkleić do: /etc/crontabs/root ?

Wybaczcie te głupie pytania, ale z linuxem nigdy wcześniej nie miałem do czynienia sad

9 (edytowany przez dopsz 2013-06-05 22:11:39)

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

Przez putty pisanina, więc lepszy WinSCP, żeby móc zwyczajnie wkleić do plików (ważne, żeby nie przez windowsowy notatnik, bo ten bruździ swoimi znakami końca linii i sprawia, że skrypty są wadliwe). Pierwszy np. do 3g-standby.sh, drugi do 3g-wakeup.sh, które umiejscawiasz np. w /bin/, a sposób ich wywołania, czyli to, co należy wpisać do /etc/crontabs/root naprościej wygenerujesz przez: http://eko.one.pl/cron.php Potem restart /etc/init.d/cron restart

P.S. A jakby Cezary podpowiedział, jakim sposobem najlepiej badać czas od odłączenia ostatniego klienta wifi, to można by tak, jak w oryginale. Pytałem kiedyś gdzieś przy okazji, jak długo arp trzyma info o ostatnich połączonych, ale przeszło bez echa : )

10

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

Super, rozumiem że początek skryptu (#!/bin/sh), też ma się w tych plikach znajdować? (Pewnie tak, bo to jakieś "wywołanie" BusyBox'a).
Co jaki czas wywoływać ten "cron"? I czy ma on wywoływać tylko pierwszy plik (czyli: 3g-standby.sh), czy dwa pliki?
Na chwilę obecną ustawiłem na  co 10 minut, dwa pliki:
"*/10 * * * * /bin/3g-standby.sh"
"*/10 * * * * /bin/3g-wakeup.sh"
Proszę o potwierdzenie, czy wszystko jest w porządku smile

11

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

@dopsz: w logach masz info że został rozłączony

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

12

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

@Przmus - #!/bin/sh, tak, a standby jak chcesz, co 10, 20,..., ale ten wakeup raczej jak najczęściej, czyli co minutę, żeby nie czekać.

13 (edytowany przez dopsz 2013-06-05 22:39:07)

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

Cezary napisał/a:

@dopsz: w logach masz info że został rozłączony

OK, ale zakładając, że klientów jest kilku, to w logach nie odkłada się przecież, że "ladies and gentlemen! the king has left the building", więc trzeba by popracować na logach, co weszło, co wyszło. Widzę to, ale dość skomplikowane. Jakiś prostszy myk?

14

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

@dopsz, aha, bo ja edytowałem jeszcze linię:

sleep 30; uci set network.wan.auto=1

na:

sleep 10; uci set network.wan.auto=1

Myślałem, że wtedy co 10 minut sprawdza, czy żadnych urządzeń nie ma podłączonych przez WiFi... Czyli praktycznie teraz co 10 minut wykonywana jest ta sama operacja?

15

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

Tu przytoczony sleep był po to, aby (nie wiem, której wersji Gargoyle używasz) 3gtester nie ubiegł wywoływanego skryptem wznowienia (tak dla porządku), bo jeśli mój wakeup sprawdza co minutę, a 3gtester co trzy, to co pewien czas spotykają się, więc tym odsunięciem w czasie o 30s. (wystarczy i 10) przełączenia wan w tryb auto, czyli podatny na działanie 3gtester (zernij w /sbin/3gtester, jeśli masz), załatwiam tę kwestię i nie następują przypadkowe pokrycia ifup wan.
Harmonogramem wykonywania obu skryptów steruje cron.

16

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

Właśnie testowałem skrypty, niestety nie działa sad
Używam: "gargoyle-1.5.10.1-ar71xx-tl-mr3420-v1-squashfs-factory.bin", więc chyba najnowsza wersja gargoyle.
Niestety w /sbin nie ma "3gtester", może przez to nie działa?
Uruchamiałem też ponownie router, ale to chyba nie skutkuje zatrzymaniem wszystkich zaplanowanych przez cron zadań?

17

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

Plikom należy jeszcze dodać np. przez putty prawo wykonalności, więc: chmod 755 /bin/3g-standby.sh i chmod 755 /bin/3g-wakeup.sh
Powinno wystarczyć, chyba, że w 1.5.10... inaczej  przedstawia się sprawa nazewnictwa interfejsów i próżno szukać 3g-wan. Nie wiem, nie aktualizowałem.

18 (edytowany przez Przmus 2013-06-06 00:38:35)

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

Hmm, znalazłem  folder 3g-wan w: "/sys/class/net"
Może Cezary będzie wiedział jak nam (a raczej mi) pomóc? smile

EDIT:
Haha, chyba jestem genialny. Coś mi przyszło do głowy, żeby zamienić "3g-wan" po prostu na "wan":
3g-standby.sh:

#!/bin/sh

CNTCONN=1

[ `iw dev wlan0 station dump | grep Station | wc -l` -lt $CNTCONN ] || return
[ "x"$(ifconfig | grep wan | grep -c "^") == "x1" ] || return

    uci set network.wan.auto=0
    (ifdown wan)

    logger -t wakeup-standby no clients, 3g inactivity standby

exit 0

3g-wakeup.sh:

#!/bin/sh

CNTCONN=1
 
[ `iw dev wlan0 station dump | grep Station | wc -l` -lt $CNTCONN ] && return
[ "x"$(uci -q get network.wan.auto) == "x0" ] || return
[ "x"$(ifconfig | grep wan | grep -c "^") == "x1" ] && return

    (ifup wan)
    logger -t wakeup-standby client connected, 3g wake up
    sleep 10; uci set network.wan.auto=1

exit 0

i działa jak należy smile
Wielkie dzięki dopsz i Cezary za pomoc smile

19

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

Dokładnie. ifup wymaga logicznej nazwy interfejsu (wan). ifconfig - fizycznej.

A Ty jak zwykle nie czytasz changelogów, byś wiedział że w ostatniej wersji 3gtestera nie ma. Czemu w ogóle tam nie zajrzałeś, tylko tak na ślepo wgrywasz firmware?

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

20

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

Eeee, Przmus jest tu zaledwie od wczoraj, więc i w temacie pewnie nie na tyle długo, żeby mu wytykać, że 'jak zwykle' nie czyta, więc rozumiem, że kuksaniec poleciał pod moim adresem, a przecież nic na ślepo nie wgrywam, wręcz przeciwnie, czytam z przyjemnością i dlatego trwam nadal przy 1.5.9.11.

21

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

Tak sobie myślę, czy istnieje możliwość zastąpienia crona wybudzającego skrypt wakeup'a, tak aby jeśli wan nie jest połączony (nie ma internetu), to automatycznie po podłączeniu się urządzenia (przez wifi), został wywoływany ten skrypt? W ten sposób nie trzeba byłoby czekać tych >60 sekund aż cron wybudzi skrypt smile Można takie coś zrobić? Czyli wywołać 3g-wakeup.sh po podłączeniu się jakiegoś urządzenia? Jeśli tak, to jak?

22 (edytowany przez dopsz 2013-08-28 23:27:19)

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

Aaa, na pewno jakąś pętlą w tle to można obsłużyć, ale to juz tutejsi Tytani musieliby podrzucić wędkę, a przy okazji, to rozwinąłem u siebie tamte skrypty, aby nie co XX minut, ale po XX minut od odłączenia ostatniego klienta gasił 3g-wan. Pomocniczo w oparciu o plik w ram z licznikiem minut. Siermiężne, ale bliższe oryginalnemu ficzerowi smile
Wywołania jak poprzednio, z tą różnicą, że parametr czasu bezczynności jako argument:
*/1 * * * * /bin/3g-standby.sh 25
*/1 * * * * /bin/3g-wakeup.sh

na dzień dobry w rc.local:
echo "0" > /tmp/connlock

3g-standby.sh

#!/bin/sh

CNTCONN=1
NEXTMIN=1

[ `iw dev wlan0 station dump | grep Station | wc -l` -lt $CNTCONN ] || (echo "0" > /tmp/connlock; return)
[ "x"$(ifconfig | grep 3g-wan | grep -c "^") == "x1" ] || return

OLDMIN=$(cat /tmp/connlock)
let NEWMIN=$OLDMIN+$NEXTMIN
echo "$NEWMIN" > /tmp/connlock

ACTMIN=$(cat /tmp/connlock)

if [ $ACTMIN -ge $1 ]; then

    uci set network.wan.auto=0
    (ifdown wan)
    echo "0" > /tmp/connlock
    logger -t wakeup-standby no clients, 3g inactivity standby
fi

exit 0

3g-wakeup.sh

#!/bin/sh

CNTCONN=1
 
[ `iw dev wlan0 station dump | grep Station | wc -l` -lt $CNTCONN ] && return
[ "x"$(uci -q get network.wan.auto) == "x0" ] || return
[ "x"$(ifconfig | grep 3g-wan | grep -c "^") == "x1" ] && return
    
    echo "0" > /tmp/connlock
    (ifup wan)
    logger -t wakeup-standby client connected, 3g wake up
    sleep 45; uci set network.wan.auto=1

exit 0

23

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

Ooo, dzięki smile Już "wklejam" do siebie.

Z tego co widzę, podobne skrypty są dostępne, np. "Uruchamianie serwisu przy podłączeniu dysku":
http://eko.one.pl/?p=openwrt-hdd#urucha … zeniudysku

Czyli coś wykrywa, kiedy dysk zostaje podłączony. Ja się na tym nie znam, ale wydaje mi się, że przy podłączaniu się urządzeń wifi jest podobnie smile

24

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

Akurat przy podłączeniu przez wifi, jeżeli korzystasz z dhcp to dnsmasq potrafi skrypt wykonać, więc tak, możesz.

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

25

Odp: Gagroyle - Auto. zerwanie połączenia 3G, jeśli brak podł. urządzeń

I to jest wędka jak się patrzy! : ) Dzięki.
dnsmasq -6 --dhcp-script=<path>
Whenever a new DHCP lease is created, or an old one destroyed, or a TFTP file transfer completes, the executable specified by this option is run. <path> must be an absolute pathname, no PATH search occurs. The arguments to the process are "add", "old" or "del", the MAC address of the host (or DUID for IPv6) , the IP address, and the hostname, if known. "add" means a lease has been created, "del" means it has been destroyed, "old" is a notification of an existing lease when dnsmasq starts or a change to MAC address or hostname of an existing lease (also, lease length or expiry and client-id, if leasefile-ro is set)...