Puncte:1

Verificarea dacă o adresă Mac este prezentă în rețeaua mea funcționează nesigur

drapel in
Cas

Am o serie de adrese Mac, iar când nu sunt toate prezente în rețea, vreau să fac ceva. Acesta a fost planul meu inițial:

mac_addresses=('1' '2' '3')
arp_output=$(arp)
pentru nivelul în „${mac_addresses[@]}”
do
   echo „$arp_output” | grep -iq „$nivel” || mac_count=$((mac_count+1))
Terminat

dacă [[ "$mac_count" = "${#mac_addresses[@]}" ]]
atunci
   Fă ceva
fi

Folosisem adresa mac a telefonului meu pentru a-l testa. Deci un singur element din matrice: telefonul meu.

Am observat că scenariul funcționa nesigur. Când telefonul meu a fost conectat la rețea, scriptul nu a făcut nimic. Bun. Când îmi deconectez telefonul de la rețea (denumit închidere wifi), tot nu face nimic, deși ar trebui până acum (deoarece telefonul meu nu mai este prezent în rețea și acesta este singurul din matrice, așa că ar trebui să facă ceva până în acest moment).

Așa că am încercat un alt mod: folosind sudo nmap -sn 192.168.2.*. Cu toate acestea, nici acest lucru nu funcționează.

Când telefonul meu este prezent, nu face nimic. Îmi deconectez telefonul și face ceva. Îmi reconectam telefonul și încă face ceva, deși telefonul meu este prezent din nou în rețea. Și nu este vorba despre secunde. Telefonul meu a fost din nou în rețea de 20 de minute și încă face ceva.

Există vreo modalitate de a remedia asta? Este din cauza unor memorii cache?

EDIT: [Răspuns la Minsky]

Vedeți următoarele:

# „1” va fi adresa mac a telefonului meu
arp | grep -i "1" #telefon conectat la wifi
192.168.2.16 eter 1 C enp3s0

#TELEFONUL ESTE ACUM DECONECTAT

arp | grep -i "1" #telefonul nu este conectat la wifi
192.168.2.16 eter 1 C enp3s0
arp | grep -i "1" #telefonul nu este conectat la wifi
192.168.2.16 eter 1 C enp3s0
arp | grep -i "1" #telefon nu este conectat la wifi
192.168.2.16 eter 1 C enp3s0

ping -b 192.168.2.255
Producție mare; 192.168.2.16 nu este vizibil în ieșire

arp | grep -i "1" #telefon nu este conectat la wifi
192.168.2.16 eter 1 C enp3s0

#TELEFONUL ESTE ACUM RE-CONECTAT

arp | grep -i "1" #telefon conectat la wifi
192.168.2.16 eter 1 C enp3s0

sudo nmap -sn 192.168.2.* | grep "1"
#NICIUN RASPUNS; COD DE IESIRE 1
drapel ru
ARP funcționează numai în segmentul dvs. de rețea - este în afara domeniului de rețea locală într-un interval IP separat? Routerul/sistemul dvs. wifi are configurat „confidențialitate” care izolează dispozitivele unul de celălalt?
Cas avatar
drapel in
Cas
nu la ambele intrebari. Dispozitivele sunt ambele pe `192.168.2.XXX`, iar routerul nu este configurat pentru a izola dispozitivele (nu este doar Vlan-ul?).
Minsky avatar
drapel mx
`arp` pe pc urmărește conexiunea/deconectarea telefonului? Cel puțin pe laptopul meu, trebuie să rulez `ping -b ` mai întâi sau nu actualizează dispozitivele (uneori). [[ eliminarea prev. comentarii pentru a-l păstra curat.]]
Cas avatar
drapel in
Cas
@Minsky vedeți editarea în postarea originală
meuh avatar
drapel cn
Tabelul arp este un cache, așa că intrările vechi sunt eliminate doar după un anumit timp. Ar trebui să vă bazați pe un răspuns `ping` pentru a vedea dacă un dispozitiv este încă acolo. Vezi și `man ip neighbour` care înlocuiește comanda `arp`. Puteți goli memoria cache cu `ip neigh flush dev eth0` unde eth0 este interfața, înainte de ping-ul de difuzare.
Cas avatar
drapel in
Cas
Desigur, este mult mai ușor să ping dispozitivul. Dar am doar adresa mac, nu adresa ip. Deci nu pot știu ce adresă ip să pun ping. Am doar adresa mac. Așa că mai întâi ar trebui să „conversim” adresa mac la adresa sa ip. Totuși, cum poți face asta?
meuh avatar
drapel cn
Efectuați deja un ping de difuzare, `ping -b 192.168.2.255`. Aceasta ar trebui să umple tabelul arp pentru orice dispozitiv online cu adresa IP 192.168.2.*.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.