Wyłączenie Wi-Fi za pomocą paska menu jest równoznaczne z:
networksetup -setairportpower en0 off
... i tak samo jak wyłączenie w ustawieniach sieciowych.
Nie mogę mówić do niskich poziomów, ale networksetup
jest dodatkiem Apple, podczas gdy ifconfig
jest standardem nie tylko dla BSD, ale także dla Linuksa. (Mimo że oba narzędzia są ostatecznie różne, nie tylko w ich implementacji, ale także w interfejsie API)
Gdybym musiał zgadywać i zgadnę, ponieważ wewnętrzne elementy Apple'a nie są dokładnie przezroczyste (proszę, jeśli ktoś jest w stanie poprawić mnie), networksetup
ma on kontrolować rzeczywisty sprzęt, urządzenie Wi-Fi, podczas gdy ifconfig
jest to czysto system operacyjny -poziomowe narzędzie. Podobnie jak w przypadku aplikacji do czatowania wideo, umieść kawałek taśmy nad kamerą.
Kilka rzeczy, które mogę zweryfikować:
- Powiedzmy, że interfejs
en0
musi być zarówno UP (tak, ifconfig en0 up
), jak i WŁĄCZONA moc portu lotniczego (więc `networksetup -setairportpower en0 on).
- Zarówno
down
ing iface
i zwracając airportpower off
, będzie świadczyć symbol Pasek menu w postaci wydrążonego konturu.
- ALE, jeśli zarówno DOWN / off, jeśli włączysz moc lotniska
on
, jeśli ifconfig ... up
nie został uruchomiony po uruchomieniu ifconfig ... down
, symbol nie będzie pusty, a macOS będzie gorączkowo skanować w poszukiwaniu sieci, ale nie będzie w stanie: (1) połączyć się z siecią ( 2) przywołaj iface0
(3) zmień tablicę routingu
Ten symbol Wi-Fi wydaje się być wynikiem zmiany stanu, a nie stanu faktycznego. W związku z tym rzeczywisty stan tego, czy Wi-Fi jest pokazywany jako zdolny do połączenia, nie jest podłączony do wskaźnika wizualnego. Ale interfejs, nawet jeśli w dół, wydaje się jakoś zeskanować w taki sposób, że jeśli zawrócić on
do airportpower
tego, „status:” nadany przez ifconfig
zamieni się szybko z powrotem i naprzód między active
i inactive
, nawet jeśli rzeczywisty interfejs nie jest UP.
Jest więc niespójność. Ale tak jest, ponieważ nie byłoby powodu wyłączać drugiego po zrobieniu tego pierwszego. A ponieważ pragnienia Apple'a i idealny API różnią się od tych z BSD.