Jak wywołać interfejs Wi-Fi z wiersza poleceń?

30

Nie mogę wymyślić, jak prawidłowo wyświetlić kartę Wi-Fi na moim laptopie. Kiedy go włączam i wydaje

$ sudo iwconfig wlan0 txpower auto
$ sudo iwlist wlan0 scan
wlan0     Interface doesn't support scanning : Network is down

zgłasza, że ​​sieć nie działa. Próba jego podniesienia również się nie udaje:

$ sudo ifup wlan0
wlan0     no private ioctls.

Failed to bring up wlan0.

Najwyraźniej brakuje mi podstawowych iw...poleceń niskiego poziomu .

Kiedy wydaje dhclientsię na interfejsie:

$ sudo dhclient -v wlan0
Internet Systems Consortium DHCP Client 4.2.2
Copyright 2004-2011 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

^C$

i przerwać, w jakiś sposób podnosi to urządzenie, a następnie działa skanowanie itp. Chciałbym uniknąć tego oczywiście zbędnego kroku.

Petr Pudlák
źródło
Istnieje wiele interfejsów Wi-Fi od jądra do przestrzeni użytkownika. iwconfigJest przestarzała i nie może być skonfigurowany do nowoczesnego jądra. iwSposób jest bardziej nowoczesne / Przykład ( nl80211 ). Starsze iwconfigmogą dawać dziwne błędy, gdy obsługa Wext nie jest skompilowana / skonfigurowana. To, co udostępniają dystrybucje narzędzi / skryptów, to kolejny problem. Myślę, że jeśli użyjesz dystrybucji, powinni zadbać o odpowiednie pakiety / konfiguracje. Jeśli zbudujesz własny, problem może występować powyżej.
bezgłośny hałas

Odpowiedzi:

29

Rzeczywiście, spróbuj sudo ifconfig wlan0 up. Aby rozwinąć odpowiedź Martina:

ifupa ifdownpolecenia są częścią pakietu ifupdown , który jest obecnie uważany za starszą nakładkę do konfiguracji sieci , w porównaniu do nowszych, takich jak network manager.

Po ifup ifupdownodczytaniu ustawień konfiguracji z /etc/network/interfaces; to działa pre-up, post-upi post-downskrypty od /etc/network, które obejmują począwszy /etc/wpasupplicant/ifupdown.shże procesy dodatkowe wpa-*opcje konfiguracyjne dla WPA wifi w /etc/network/interfaces (patrz zcat /usr/share/doc/wpasupplicant/README.Debian.gzdokumentacji). Dla wireless-toolspakietu WEP odgrywa podobną rolę jak wpa-supplicant. iwconfigjest wireless-toolsrównież z.

ifconfigjednocześnie jest narzędziem niższego poziomu , które jest używane przez ifupdowni pozwala na większą elastyczność. Na przykład istnieje 6 trybów działania adaptera Wi-Fi, a IIRC ifupdownobejmuje tylko tryb zarządzany (+ tryb roamingu, który formalnie nie jest trybem?). Za pomocą iwconfigi ifconfigmożesz włączyć np. Tryb monitorowania karty bezprzewodowej, podczas gdy ifupdownnie będziesz w stanie zrobić tego bezpośrednio.

Boris Burkov
źródło
7
z debian stretch ifconfigzostał zastąpiony przez ip, alternatywne polecenie toip link set wlan0 up
Ben
11

Spróbuj ifconfig wlan0 upzamiast ifup.

Martin von Wittich
źródło
4

Oto, czego używam do codziennego łączenia się z punktem dostępowym WEP:

#!/bin/bash

DEV=$(iw dev | awk '/Interface/ {interf=$2} END {print interf}')
PIDFILE=/var/run/dhcpcd-$DEV.pid


if [[ -f $PIDFILE ]] && kill -0 $(cat /var/run/dhcpcd-$DEV.pid)
then
    dhcpcd -k $DEV
fi

ifconfig $DEV down
sleep 1
iwconfig $DEV mode managed
iwconfig $DEV  key blabfoobar
ifconfig $DEV up
iwconfig $DEV essid 'Unindicted Co-conspirator'
iwconfig $DEV ap 00:0D:51:EB:E5:1E

sleep 5
dhcpcd --noipv6rs --noarp $DEV

Musisz podać ESSID i MAC dla dowolnego punktu dostępu.

Trochę trudniej jest zaszyfrować WPA. Musisz mieć wpa_supplicant.confplik z odpowiednim wpisem. Lubię to:

# Simple case: WPA-PSK, PSK as an ASCII passphrase, allow all valid ciphers
network={
    ssid="FaveCoffeeHouse"
    psk="cafe241800"
    priority=1
}

Gdy masz już taki plik conf, możesz uruchomić ten skrypt:

#!/bin/bash

DEV=$(iw dev | awk '/Interface/ {print $2}')

ifconfig $DEV down
iwconfig $DEV mode managed
ifconfig $DEV up
iwconfig $DEV essid 'FaveCoffeeHouse'
iwconfig $DEV ap 00:21:1e:3d:2a:80

echo now run: wpa_supplicant -Dnl80211 -i$DEV -c./wpa_supplicant.conf 

Aktualizacja, 03.12.2014:

Arch Linux jest tym, czym jest, mój skrypt połączenia z WEP jest zupełnie inny. Pomyślałem, że dodam ją do tej odpowiedzi, aby była aktualna.

#!/bin/bash

DEV=wlp12s0

if [[ -f /run/dhcpcd-$DEV.pid ]]
then
        kill -QUIT $(cat /run/dhcpcd-$DEV.pid)
fi

ifconfig $DEV down
iw dev $DEV set type managed
ifconfig $DEV up
sleep 2

iw dev wlp12s0 connect -w 'Akond of Swat' 2462 00:7c:41:eb:e5:1e key 0:befedade

sleep 15

dhcpcd -4 --nohook 10-wpa_supplicant --noarp --noipv6rs $DEV

Musiałem nagle przejść do używania iw. Coś w jądrze Arch LTS lub sterownikach WiFi (mój laptop ma kartę Intel WiFi korzystającą ze sterownika „iwl4965”) zmieniło się nie tak dawno temu. Musisz zmienić częstotliwość („2462”) i adres MAC punktu dostępu, aby to działało.

Bruce Ediger
źródło
3

Począwszy od Ubuntu 18.04 (i odpowiednich wersji Debiana) ifconfig i ifup/ ifdownsą przestarzałe, a zalecanym sposobem uruchomienia interfejsu jest ippolecenie:

ip link set dev <interface> up
ip link set dev <interface> down

Możesz sprawdzić dostępne interfejsy za pomocą:

ip link

I możesz wyświetlić przypisane adresy IP interfejsów za pomocą:

ip addr show

Lub dokładniej:

ip addr show scope global | grep inet
shellcat_zero
źródło