1

Temat: Sprawdzanie jakie urządzenia podłączone są do WiFi

Dzień Dobry. Potrzebuje napisać krótki skrypt który pokazywałby czy urządzenie (Smartfon konkretnie) jest podłączony do sieci WiFi. Próbowałem wykorzystać polecenie "ping" i pingując IP smartfona sprawdzać czy jest w sieci czy go nie ma. Wszystko byłoby dobrze gdyby nie fakt że smartfon po kilku minutach od zgaszenia ekranu ma jakieś tam swoje sposoby na oszczędzanie energii i między innymi nie odpowiada na pingi (po wybudzeniu smartfona od razu pingi działają z powrotem). Zauważyłem jednak że banner przy logowaniu pokazuje ilość podłączonych urządzeń do WiFi:

radio0: mode: ap, ssid: Wi-Fi, channel: 7, conn: 7

w momencie gdy smartfon nie odpowiada już na pingi, to ilość urządzeń wyświetlanych w tym miejscu nie maleje czyli OpenWRT nadal widzi to urządzenie.

Moje pytanie brzmi: Skąd OpenWRT bierze sobie informacje o tym ile jest podłączonych urządzeń konkretnej sieci Wi-Fi i czy da się sprawdzić jakie urządzenia są konkretnie podłączone?

2

Odp: Sprawdzanie jakie urządzenia podłączone są do WiFi

Polecenie:

iw dev wlan0 station dump

Czytaj: http://eko.one.pl/?p=openwrt-skrypty#li … lientwdoap

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

3

Odp: Sprawdzanie jakie urządzenia podłączone są do WiFi

Dokładnie tego potrzebowałem!
Dziękuje Cezary za ekspresową pomoc, z resztą jak zawsze big_smile

4 (edytowany przez Wally 2019-01-01 13:17:12)

Odp: Sprawdzanie jakie urządzenia podłączone są do WiFi

@Zoltar noworoczny prezencik smile

 #!/bin/sh

C0=$(iw dev wlan0 station dump | grep Station | wc -l)
C1=$(iw dev wlan1 station dump | grep Station | wc -l)
 
MAC0=$(iw dev wlan0 station dump | grep Station | awk '{print $2}')
MAC1=$(iw dev wlan1 station dump | grep Station | awk '{print $2}')
 
if [ $C0 -gt 0 ]; then
 echo "Sieć 5GHz:"
 i=0
 while [ $i -lt $C0 ]
 do
  true $(( i++ ))
  if [ $C0 -gt 0 ]; then
   echo " - $(echo $(cat /tmp/dhcp.leases | grep $(echo $MAC0 | awk -v var="$i" '{print $var}') | awk '{print $4}'))"
  fi
 done
fi
 
if [ $C1 -gt 0 ]; then
 echo "Sieć 2.4GHz:"
 i=0
 while [ $i -lt $C1 ]
 do
  true $(( i++ ))
  if [ $C1 -gt 0 ]; then
   echo " - $(echo $(cat /tmp/dhcp.leases | grep $(echo $MAC1 | awk -v var="$i" '{print $var}') | awk '{print $4}'))"
  fi
 done
fi

Wyświetli nazwy hostów połączonych z sieciami 2.4 i 5GHz (u mnie wlan0 to 5) jeżeli dhcp.leases je zawiera.

P.S. Wszystkiego najlepszego w Nowym Roku dla całej społeczności eko.one.pl

Wally

5

Odp: Sprawdzanie jakie urządzenia podłączone są do WiFi

@Wally Przetestowane, działa big_smile (tylko sobie podmieniłem nazwy sieci 5GHz z 2,4GHz)
U mnie skrypt był potrzebny do Domoticz'a, ale ten od Ciebie z pewnością się przyda smile
Fajne takie prezenty na nowy rok, również wszystkiego dobrego w 2019 wink

6

Odp: Sprawdzanie jakie urządzenia podłączone są do WiFi

Masz możne opis jak to wykorzystać w Domoticzu?

Asus Merlin RT-AC86U + 2xRT-AC68U
OpenWRT rPi3+ E3372
rPi5 HA, rPi4 OH

7 (edytowany przez gaza 2019-10-07 10:17:16)

Odp: Sprawdzanie jakie urządzenia podłączone są do WiFi

Skrypt działa "prawie" dobrze. Problem jest gdy w pliku /tmp/dhcp.leases zamiast nazwy urzadzenia będzie * ( gwiazdka )
wtedy wyświetla się lista wszystkich plików z katalogu.
rozwiązaniem jest dodanie dodatkowych cudzysłowów przy drugim echo
zamiast:

echo " - $(echo $(cat /tmp/dhcp.leases | grep $(echo $MAC0 | awk -v var="$i" '{print $var}') | awk '{print $4}'))"

zrobić tak:

echo " - $(echo "$(cat /tmp/dhcp.leases | grep $(echo $MAC0 | awk -v var="$i" '{print $var}') | awk '{print $4}')")"

wtedy w wyniku dostajemy po prostu * zamiast "śmieci"

8

Odp: Sprawdzanie jakie urządzenia podłączone są do WiFi

Pozwolicie, że w tym wątku będę kontynuował.
Podczas pracy powyższego skryptu pojawił mi się pewien problem, nazwijmy to, z jakością danych.
Polecenie

iw dev wlan1 station dump

zwraca mi jeden mac adres, którego później nie ma w pliku dhcp.leases

Station 60:01:94:97:49:83 (on wlan0-2)
        inactive time:  9020 ms
        rx bytes:       6492
        rx packets:     70
        tx bytes:       486
        tx packets:     4
        tx retries:     0
        tx failed:      0
        rx drop misc:   0
        signal:         -50 [-60, -52, -56] dBm
        signal avg:     -49 [-60, -51, -55] dBm
        tx bitrate:     1.0 MBit/s
        rx bitrate:     6.0 MBit/s
        rx duration:    0 us
        authorized:     yes
        authenticated:  yes
        associated:     yes
        preamble:       short
        WMM/WME:        yes
        MFP:            no
        TDLS peer:      no
        DTIM period:    2
        beacon interval:100
        CTS protection: yes
        short preamble: yes
        connected time: 389 seconds

Możecie powiedzieć co jest tego przyczyną ? Jak to wyjaśnić i jak można ewentualnie pośledzić to urządzenie ?
Jak można to z poziomu wiersza poleceń rozłączyć ?

Pozdrawiam
G

9 (edytowany przez Cezary 2021-01-20 09:25:56)

Odp: Sprawdzanie jakie urządzenia podłączone są do WiFi

Bo urządzenie nie pobrało adresu z dhcp lub ma ustawiony statyczny adres. Nie musi go przecież być leases. Zobacz w logach czy wysłało prośbę o dhcp. Jak nie to nie.

EDIT: albo zrestartowałeś router/dnsmasq i dlatego nie masz wpisu o pobranym adresie.

Rozłączenie:

ubus call hostapd.wlan0 del_client '{"addr":"XX:XX:XX:XX:XX:XX", "reason": 5, "deauth": true, "ban_time": 0}'

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

10

Odp: Sprawdzanie jakie urządzenia podłączone są do WiFi

Dzieki za szybką odpowiedź.
Rozłączyłem klienta i wklejam log

Wed Jan 20 10:02:22 2021 daemon.notice hostapd: wlan0-2: AP-STA-DISCONNECTED 60:01:94:97:49:83
Wed Jan 20 10:02:27 2021 daemon.info hostapd: wlan0-2: STA 60:01:94:97:49:83 IEEE 802.11: deauthenticated due to local deauth request
Wed Jan 20 10:02:35 2021 daemon.info hostapd: wlan0-2: STA 60:01:94:97:49:83 IEEE 802.11: authenticated
Wed Jan 20 10:02:35 2021 daemon.info hostapd: wlan0-2: STA 60:01:94:97:49:83 IEEE 802.11: associated (aid 5)
Wed Jan 20 10:02:35 2021 daemon.notice hostapd: wlan0-2: AP-STA-CONNECTED 60:01:94:97:49:83
Wed Jan 20 10:02:35 2021 daemon.info hostapd: wlan0-2: STA 60:01:94:97:49:83 WPA: pairwise key handshake completed (RSN)
root@OpenWrt:~#

Widać, że się połączył z powrotem.
Jest możliwość sprawdzenia IP ?
Niestety w dalszym ciągu nie wiem co to jest smile
sprawdziłem początek MAC-a pod kątem producenta i jest to Espressif, ale nie wiem co to za moje urządzenie. IP pozwoliłoby mi się domyślić smile

11 (edytowany przez Cezary 2021-01-20 10:25:52)

Odp: Sprawdzanie jakie urządzenia podłączone są do WiFi

Soniff czy coś podobnego.

grep 60:01:94:97:49:83 /proc/net/arp

Lub ogólnie cat /proc/net/arp

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

12

Odp: Sprawdzanie jakie urządzenia podłączone są do WiFi

smile dzieki

cat /proc/net/arp | grep 60:01:94:97:49:83

to jest to smile

znalazłem to czego szukałem smile

Pozdr