- How can I get a list of available wireless networks on Linux?
- 3 Answers 3
- Утилита iwctl в Arch Linux
- Возможности iwctl
- Синтаксис
- Опции
- Установка
- Использование команды iwctl в Arch Linux
- Запуск демона и вход в интерактивный режим
- Подключение к сети
- Отключение от сети
- Заключение
- 3 способа подключения к Wi-Fi из командной строки в Debian
- Обнаружение сетей с помощью Iwconfig
- Подключение к Wi-Fi из командной строки с помощью nmcli
- Подключение к wifi с консоли с помощью nmtui
- Подключитесь к Wi-Fi с помощью wpa_supplicant
How can I get a list of available wireless networks on Linux?
I would like to get a list of the wireless networks available. Ideally this would be via some C call, but I don’t mind if I have to kludge it with a system call. Even better if the required C call or program doesn’t require some exotic 3rd party package. The internet seems to suggest I use sudo iwlist
You do not need to be root to run iwlist, but it will only report the cached values from the last periodic scan. To force a new scan you do need to be root.
3 Answers 3
It’s pretty easy to do a scan in the command line. The man pages are your friend here (check out iwconfig and iwlist). But using the C interface is a little more difficult so I’ll focus on that.
First of all, as other people have mentioned, definitely download out the wireless tools source code. All the documentation for the programming interface is in the .c files. As far as I can tell, there is no web documentation for the api. However, the source code is pretty easy to read through. You pretty much only need iwlib.h and iwlib.c for this question.
While you can use iw_set_ext and iw_get_ext , the libiw implements a basic scanning function iw_scan , from which you can extract most of the information that you need.
Here is a simple program to get the ESSID for all available wireless networks. Compile with -liw and run with sudo .
#include #include #include int main(void) < wireless_scan_head head; wireless_scan *result; iwrange range; int sock; /* Open socket to kernel */ sock = iw_sockets_open(); /* Get some metadata to use for scanning */ if (iw_get_range_info(sock, "wlan0", &range) < 0) < printf("Error during iw_get_range_info. Aborting.\n"); exit(2); >/* Perform the scan */ if (iw_scan(sock, "wlan0", range.we_version_compiled, &head) < 0) < printf("Error during iw_scan. Aborting.\n"); exit(2); >/* Traverse the results */ result = head.result; while (NULL != result) < printf("%s\n", result->b.essid); result = result->next; > exit(0); >
DISCLAIMER: This is just a demonstration program. It’s possible for some results to not have an essid. In addition, this assumes your wireless interface is «wlan0». You get the idea.
Read the iwlib source code!
Утилита iwctl в Arch Linux
В Arch Linux инструмент командной строки iwctl (iwd control) предназначен для управления сетевым запросчиком iwd (Internet Wireless Daemon).
Демон iwd управляет беспроводными соединениями в системах Linux. Он разработан, чтобы быть лёгким и быстрым, с минимальным набором зависимостей, и предназначен для замены традиционных утилит управления беспроводной сетью, таких как wpa_supplicant и NetworkManager.
Возможности iwctl
Утилита iwctl позволяет пользователю управлять беспроводными подключениями, сетями и устройствами iwd , предоставляя простой и согласованный интерфейс.
Пользователь может использовать iwctl для получения списка доступных беспроводных устройств, сканирования доступных беспроводных сетей, подключения к беспроводной сети, отключения от беспроводной сети и получения состояния текущего беспроводного подключения.
Утилита также позволяет пользователю управлять сетевыми настройками, такими как установка статического IP-адреса, настройка прокси-сервера и настройка собственного DNS-сервера.
Утилиту iwctl также можно использовать для устранения проблем с беспроводным подключением, позволяя просматривать состояние беспроводного устройства, сведения о подключенной сети и состояние подключения.
Синтаксис
Опции
—username Указать имя пользователя —password Ввести пароль —passphrase Ввести кодовую фразу —dont-ask Не запрашивать недостающие учётные данные —help Показать справку
Установка
Вначале всегда обновляем систему:
oleg@mobile:~:$ yay -Syu :: Обновление баз данных пакетов. core 153,4 KiB 415 KiB/s 00:00 [###############################################] 100% extra 1739,4 KiB 1611 KiB/s 00:01 [###############################################] 100% community 7,2 MiB 1618 KiB/s 00:05 [###############################################] 100% multilib 165,9 KiB 921 KiB/s 00:00 [###############################################] 100% :: Запускается полное обновление системы. разрешение зависимостей. проверка конфликтов. . Будет загружено: 425,51 MiB Будет установлено: 1447,64 MiB Изменение размера: -34,25 MiB :: Приступить к установке? [Y/n]
Теперь устанавливаем пакет iwd , в который и входит утилита iwctl :
oleg@mobile:~:$ yay -Syu oleg@mobile:~:$ yay -S iwd разрешение зависимостей. проверка конфликтов. Пакеты (1) iwd-2.3-1 Будет установлено: 1,92 MiB Изменение размера: 0,00 MiB :: Приступить к установке? [Y/n]
Использование команды iwctl в Arch Linux
Запуск демона и вход в интерактивный режим
Запускаем службу iwd.service :
oleg@mobile:~:$ sudo systemctl start iwd.service oleg@mobile:~:$
Запуск iwctl в интерактивном режиме:
Теперь приглашение командной строки имеет следующий вид:
В интерактивном режиме работает автодополнение по нажатию клавиши Tab. Для выхода из интерактивного режима используется комбинация клавиш Ctrl+d.
Подключение к сети
Список всех Wi-Fi устройств:
[iwd]# station wlan0 scan [iwd]#
Список обнаруженных сетей:
[iwd]# station wlan0 get-networks
[iwd]# station wlan0 connect Sotiris
[iwd]# station wlan0 connect Sotiris Type the network passphrase for Sotiris psk. Passphrase:
Вывод состояния подключения:
Отключение от сети
Для отключения от сети вводится следующая команда:
[iwd]# station wlan0 disconnect
Заключение
В этой короткой статье приведены основные примеры использования в Arch Linux утилиты iwctl . Надеюсь, что они пригодятся вам в работе.
3 способа подключения к Wi-Fi из командной строки в Debian
Советы и хитрости
В этом руководстве кратко объясняется, как подключиться к Wi-Fi из командной строки в дистрибутивах Linux на основе Debian и Debian 3 различными способами: с помощью nmcli, nmtui и wpa_supplicant. В дополнение к nmcli, nmtui и wpa_supplicant используются команды iwconfig, iwlist и dhclient, которые кратко объясняются в этом руководстве.
Обнаружение сетей с помощью Iwconfig
Перед тем как начать, нам нужно знать essid или имя сети, к которой мы хотим подключиться.
В этом руководстве показано, как использовать команду Iwconfig для сканирования доступных сетей. Iwconfig похож на команду ifconfig, но для управления беспроводными интерфейсами. Эта команда позволяет пользователю редактировать частоту или канал, изменять режим сетевого устройства (Ad-hoc, Managed, Master, Repeater, Monitor, Secondary), устанавливать ESSID и т. Д.
ПРИМЕЧАНИЕ. SSID / ESSID — это имена или идентификаторы сети или маршрутизатора.
Чтобы проверить, правильно ли обнаружена карта Wi-Fi, сначала выполните команду iwconfig, как показано на следующем снимке экрана:
Как вы можете видеть, выходные данные показывают интерфейс loopback (lo), карту Ethernet (enp2s0) и карту Wi-Fi wlp3s0, которые мы будем использовать для сканирования доступных сетей с помощью команды Iwlist.
Первая строка показывает поддержку стандартов 802.11 и показывает, что устройство не подключено. Вторая строка показывает, что карта Wi-Fi находится в управляемом режиме и не связана с точкой доступа.
Третья строка включает Retry Short Limit, который определяет количество попыток после неудачной передачи, и RTS Threshold, определяющий количество подтверждений до соединения, Fragment Thr показывает максимальный размер пакета, который отправит ваша карта.
Последние две строки показывают, что аутентификация отсутствует и управление питанием выключено.
Команда Iwlist предоставляет дополнительную информацию о беспроводных устройствах, в том числе о тех, которые не являются частью нашего компьютера. В этом случае мы просканируем доступные сети, добавив сканирование аргументов. На выходе будет отображен список точек доступа с некоторой информацией, такой как ESSID, качество сигнала, канал, режим и т.д.
Выполните следующую команду, чтобы распечатать список доступных сетей:
ПРИМЕЧАНИЕ. Замените wlp3s0 вашей беспроводной картой, отображаемой при выполнении команды iwconfig.
Как видите, в выходных данных показано несколько сетей, включая точку доступа LinuxHint, но формат неудобен для пользователя. Если вы хотите распечатать только ESSID или имена доступных сетей, опуская остальные, запустите:
Как вы можете видеть, вывод понятен и ограничен именами точек доступа (essid).
Подключение к Wi-Fi из командной строки с помощью nmcli
NMCLI — это интерфейс командной строки для NetworkManager, который можно использовать как альтернативу графическим менеджерам. NMCLI позволяет пользователю создавать, редактировать и удалять или включать и отключать соединения, а также отображать состояние устройства.
Следующий синтаксис показывает, как подключиться к сети LinuxHint (обнаруженной с помощью ранее использованной команды Iwlist) путем выполнения nmcli со следующими аргументами:
Где d wifi указывает беспроводное устройство, подключение LinuxHint указывает ессид и пароль морочита пароль.
ПРИМЕЧАНИЕ. Замените LinuxHint на ssid вашего маршрутизатора и morochita на ваш фактический пароль.
Вы можете получить дополнительную информацию о nmcli на https://linux.die.net/man/1/nmcli
Подключение к wifi с консоли с помощью nmtui
Nmtui — это интерактивная альтернатива nmcli и Network Manager на основе curses при запуске консоли:
Первый экран позволяет нам редактировать существующее соединение, активировать новое соединение и редактировать наше имя хоста. Выберите второй вариант Активировать соединение и нажмите ENTER.
Nmtui покажет как проводные, так и беспроводные доступные сети. Выберите свою точку доступа и нажмите ENTER.
Примечание: для этого примера ESSID был изменен с LinuxHint на LinuxH1nt, чтобы показать шаг запроса пароля.
На следующем экране будет запрошен пароль, введите его и нажмите ENTER, чтобы продолжить.
Вы можете получить дополнительную информацию о Nmtui на странице руководства по адресу https://www.mankier.com/1/nmtui.
Подключитесь к Wi-Fi с помощью wpa_supplicant
Wpa_supplicant — это соискатель, который разрешает согласование в процессе аутентификации. В отличие от nmcli и nmtui, wpa_supplicant по умолчанию не устанавливается в Debian.
Чтобы установить wpa_supplicant в системах на базе Debian, выполните:
Вам нужно отредактировать файл /etc/wpa_supplicant.conf, добавив essid и пароль вашей точки доступа, вы можете добиться этого, выполнив следующую команду:
ПРИМЕЧАНИЕ. Замените LinuxHint на ваш essid и morochita на ваш фактический пароль. Вы можете использовать кавычки для сетевых имен, содержащих пробелы.
После редактирования wpa_supplicant.conf вы можете подключиться, выполнив следующую команду, где -c указывает файл конфигурации, а -i указывает сетевой интерфейс:
Как вы можете видеть с помощью iwconfig, теперь ваша беспроводная карта связана с точкой доступа.
Для подключения запустите команду dhclient, как показано на следующем снимке экрана, чтобы получить динамический IP-адрес:
ПРИМЕЧАНИЕ. Замените wlp3s0 своей беспроводной картой.
После запуска dhclient вы должны быть подключены к Интернету через соответствующую точку доступа.
Дополнительную информацию о wpa_supplicant можно получить по адресу https://linux.die.net/man/8/wpa_supplicant.
Надеюсь, вы нашли это руководство полезным для подключения к Wi-Fi из командной строки в системах на основе Debian. Следите за LinuxHint, чтобы получить больше руководств и советов по Linux.