Как вывести Wi-Fi интерфейс из командной строки?

30

Я не могу понять, как правильно вывести карту Wi-Fi на моем ноутбуке. Когда я его включаю и выпускаю

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

он сообщает, что сеть не работает. Попытка поднять его тоже не удалась:

$ sudo ifup wlan0
wlan0     no private ioctls.

Failed to bring up wlan0.

Видимо, мне не хватает какой-то базовой низкоуровневой iw...команды.

Когда я выдаю dhclientна интерфейсе:

$ 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$

и прервите его, он каким-то образом поднимает устройство, а затем работает сканирование и т. д. Я хотел бы избежать этого явно лишнего шага.

Петр Пудлак
источник
Есть несколько интерфейсов Wi-Fi от ядра до пространства пользователя. Не iwconfigрекомендуется и не может быть настроено в современном ядре. iwМетод является более современным / предпочтительным ( nl80211 ). Старые iwconfigмогут давать странные ошибки, когда поддержка wext не компилируется / не настраивается. То, что делают дистрибутивы инструментов / скриптов, является другой проблемой. Я думаю, если вы используете дистрибутив, они должны позаботиться о том, чтобы предоставить правильные пакеты / конфигурации. Если вы создаете свой собственный, то у вас может быть проблема выше.
бесхитростный шум

Ответы:

29

Действительно, попробуй sudo ifconfig wlan0 up. Чтобы уточнить ответ Мартина:

ifupи ifdownкоманды являются частью пакета ifupdown , который теперь считается устаревшим интерфейсом для конфигурации сети , по сравнению с более новыми, такими как network manager.

После ifup ifupdownчитает настройки конфигурации из /etc/network/interfaces; он работает pre-up, post-upи post-downсценарии из /etc/network, которые включают в себя , начиная /etc/wpasupplicant/ifupdown.shчто процессы дополнительных wpa-*параметров конфигурации для ВПА WiFi, в /etc/network/interfaces (см zcat /usr/share/doc/wpasupplicant/README.Debian.gzдокументации). Для WEP wireless-toolsпакет играет аналогичную роль wpa-supplicant. iwconfigот wireless-toolsтоже.

ifconfigв то же время это инструмент более низкого уровня , который используется ifupdownи обеспечивает большую гибкость. Например, существует 6 режимов работы адаптера Wi-Fi, и IIRC ifupdownохватывает только управляемый режим (+ режим роуминга, который формально не является режимом?). С помощью iwconfigи ifconfigвы можете включить, например, режим мониторинга вашей беспроводной карты, в то время как с ifupdownвами вы не сможете сделать это напрямую.

Борис Бурков
источник
7
с debian stretch, ifconfigзаменен на ip, альтернативная командаip link set wlan0 up
Ben
11

Попробуй ifconfig wlan0 upвместо ifup.

Мартин фон Виттих
источник
4

Вот что я использую для ежедневного подключения к точке доступа 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

Вам нужно будет ввести ESSID и MAC для любой точки доступа, которую вы хотите.

Это немного сложнее для шифрования WPA. У вас должен быть wpa_supplicant.confфайл с соответствующей записью. Так:

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

Если у вас есть такой файл conf, вы можете запустить этот скрипт:

#!/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 

Обновление, 2014-12-03:

Будучи Arch Linux, мой скрипт подключения к WEP сильно отличается. Я думал, что добавлю это к этому ответу, чтобы держать это актуальным.

#!/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

Мне пришлось перейти на использование iwочень внезапно. Что-то в ядре Arch LTS или в драйверах WiFi (мой ноутбук оснащен картой Intel WiFi с драйвером iwl4965) изменилось не так давно. Вам нужно изменить частоту («2462») и MAC-адрес точки доступа, чтобы заставить это работать.

Брюс Эдигер
источник
3

Начиная с Ubuntu 18.04 (и соответствующих версий Debian) ifconfigи ifup/ ifdownустарели, и рекомендуемый способ вызвать интерфейс - с помощью ipкоманды:

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

И вы можете проверить ваши доступные интерфейсы с:

ip link

И вы можете показать назначенные IP-адреса ваших интерфейсов с:

ip addr show

Или более конкретно:

ip addr show scope global | grep inet
shellcat_zero
источник