LINUX.ORG.RU

Как получить список сетей на вывод с iwctl?

 , ,


0

2

Здравствуйте, пишу оболочку для автоматизации подключения к сетям Wi-Fi через iwctl на Bash, по идее она должна при работе что :

  1. Поднять адаптер
  2. Просканировать сети и заставить пользователя выбрать ту сеть, к которой он хочет подключиться, желательно прям в интерфейсе через радиокнопку.
  3. спросить пароль при наличии шифрования
  4. поднять DHCP клиент или спросить настройки сети у пользователя и сохранить все в рабочий файл.
  5. проверить доступность интернет подключения путем ping одного из веб ресурсов. Вопрос заключается в том, как хоть как-то адекватно получить список сетей и вывести его или в переменную или во временный файл, пробовал «$ sudo iwctl station wlan0 get-networks | grep ESSID > /tmp/linxcat/wifi/networks.tmp», но файл остается пустой. Прошу помощи.

Вы придумали nmtui/NetworkManager. Почему бы просто его не использовать?

Пробовал «$ sudo iwctl station wlan0 get-networks | grep ESSID > /tmp/linxcat/wifi/networks.tmp», но файл остается пустой

Попробуйте без перенаправления в файл, пока вывод не станет ожидаемым, потом верните перенаправление.

Flotsky ★★
()
Последнее исправление: Flotsky (всего исправлений: 1)
Ответ на: комментарий от Flotsky

Почему бы просто его не использовать?

Потому что это жирное и глючное г****о. С iwd гораздо лучше работает connman, благо, что их пишут примерно одни и те же люди.

Автору: https://wiki.archlinux.org/title/Iwd

First, if you do not know your wireless device name, list all Wi-Fi devices:

[iwd]# device list

Then, to initiate a scan for networks (note that this command will not output anything):

[iwd]# station device scan

You can then list all available networks:

[iwd]# station device get-networks

Учитывая, что

но файл остается пустой.

Возможно, адаптер не видит сетей. Удостоверьтесь, что iwd активен, а адаптер поддерживается системой.

Siborgium ★★★★★
()

grep ESSID

Если здесь ESSID это литерал, т.е. команда исполняется именно в таком виде, то это ошибка.

Таблица, выводимая iwctl station wlan0 get-networks, выглядит следующим образом:

  > NETWORK_NAME_1                psk               ****  
    NETWORK_NAME_2                psk               ****  
    NETWORK_NAME_3                psk               ****  
    NETWORK_NAME_4                psk               ****  

где NETWORK_NAME_x – некоторое название сети. Соответственно, нужно делать grep NETWORK_NAME_y, где NETWORK_NAME_y – название сети, к которой вы хотели бы подключиться, символом > отмечена активная в данный момент сеть.

Siborgium ★★★★★
()
Последнее исправление: Siborgium (всего исправлений: 1)
Ответ на: комментарий от firkax

ну вот. А чтоб вырасти в системного программиста на си, который использует баш по назначению, баша надо не бояться. А чтоб не бояться, надо с ним наиграться, что, собственно, мы и наблюдаем. Говорю ж – отрадно

pihter ★★★★★
()
Ответ на: комментарий от Siborgium

Про NetworkManager согласен, он во первых даже не удосужился нормально работать с моим Wi-Fi адаптером, просто на любом арче подобным дистрибутивом, который я бы не ставил на свой Samsung R719, просто дропая подключение через 3 - 5 секунд после попытки, а если и подключался, то скорость, наперекор тому, что у меня стоит дома роутер Билайн, который по факту выдает 30 - 40 Мбит/с, NetworkManager ее режет до 124 - 128 Кбит/с, хотя на другом компьютере, на котором установлена Windows Vista, скорость достигает номинального показателя, потому и был выбрал iwd, так как он более стабилен, но проблема в том, что все время при включении пк требуется вводить комманды поднятия вафли, скана сетей ну и подключения, потому решил этот процесс немного автоматизировать при помощи небольшого баш скрипта с псевдографическим интерфейсом на базе пакета dialog.

tiorin
() автор топика