Беспроводной интерфейс не поднимается

Основываясь на различных кавычках, которые вы использовали в назначениях переменных, я полагаю, что вы неверно истолковали фразу «если слово в двойных -кавычках или нет» означает «если элемент массива (s )заключены в двойные -кавычки», в то время как в руководстве подразумевается «если слово, представляющее раскрываемую переменную, заключено в двойные -кавычки или нет».

Вы также используете echoс расширением переменных, происходящим в той же строке; вы можете получить более четкие результаты, если будете использовать что-то более настраиваемое, например printf(, как Кусалананда ), или как:

$ printf -- '->%s<-\n' "${ape[@]}"
->Apple Banana<-
->Emacs Window<-
->Panda Bamboo Nature<-

Если бы вы могли видеть промежуточные значения, которые делает printf, вы бы увидели:

printf -- '->%s<-\n' "Apple Banana" "Emacs Window" "Panda Bamboo Nature"

В отличие от версии без кавычек:

$ printf -- '->%s<-\n' ${ape[@]}
->Apple<-
->Banana<-
->Emacs<-
->Window<-
->Panda<-
->Bamboo<-
->Nature<-

... где промежуточные значения:

printf -- '->%s<-\n' Apple Banana Emacs Window Panda Bamboo Nature

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

«Длина» массива обычно представляет собой количество элементов, которые вы сгенерировали с помощью синтаксиса ${#ape[@]}. Использование ${#ape}запрашивает у bash длину первого элемента:

Referencing an array variable without a subscript is equivalent to referencing with a subscript of 0

, вот почему вы получаете эти разные значения.

1
18.12.2019, 11:30
2 ответа

На самом деле у меня была такая же проблема с моим безголовым ноутбуком NAS, и я узнал следующее:

Если у вас есть пароль/строка WPA/WPA2, этого недостаточно/не работает, чтобы передать его через пустую точку доступа/маршрутизатор через терминал по многим, но в основном по соображениям безопасности.

1. Вы должны сгенерировать ключ шифрования из пароля, и вы можете сделать это через запрос wpa -f.e. with wpa_passphrase your-ESSID your-wifi-passphrase | sudo tee /etc/wpa_supplicant.confкак описывает sudo pacman -S NetworkManagerd здесь или здесь и точно так же работает на Arch Linux. Кстати. неважно, где вы храните файл wpa -соискателя -, просто запомните путь к нему. binarym также рассказал вам основную структуру в своем ответе. (сгенерированный ключ wpa -запрашивающего, а не сам пароль wpa — это то, что нужно в arch wiki)


  1. Если вы подключены к Интернету, т.е. через кабель локальной сети вы можете sudo pacman -S wifi-menu, а затем выполнить wifi-menu, это самый быстрый способ, который я нашел, чтобы подключиться к защищенному паролем Wi-Fi с терминала и сгенерировать запросный ключ wpa _из пароля. Возможно, он уже установлен.

  1. Лучший способ подключения через терминал через netctl, потому что это самый прозрачный способ подключения к Wi-Fi, который я нашел здесь , описанный как «сложный способ», но, как я нашел самый логичный способ и наиболее прост в обращении следующим образом, и он должен быть уже установлен:

а )проверьте папку примера с помощьюls /etc/netctl/examples

б )выберите один пример профиля, который вам подходит, и скопируйте его в папку netctl, в вашем случае:

sudo cp /etc/netctl/examples/wireless-wpa /etc/netctl/your_profile_name

или

sudo cp /etc/netctl/examples/wireless-wpa-static /etc/netctl/your_static_profile_name-если вам нужен статический IP-адрес.

с )Отредактируйте свой профиль, например. с vim или nano /etc/netctl/your _имя профиля _, добавьте свой пароль -пустой или ключ, раскомментировав то, что вам нужно, и сохраните его с ctrl + xили в vim с:wq

д )и не толькоnetctl start your_profile_name-или остановите его с помощью netctl stop your_profile_nameили запустите его автоматически с помощью netctl enable your profile_name-, вот так просто. (возможно, вам придется установить netctl с помощью sudo pacman -S netctl)


4. Если вы решили использовать/установить графический интерфейс, такой как gnome вы можете использовать NetworkManager(sudo pacman -S NetworkManager).

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

0
27.01.2020, 23:40

Учитывая две следующие строки:

Dec 12 16:43:25 mikael NetworkManager[318]: <warn>  [1576169005.9104] device (wlp2s2): no secrets: User canceled the secrets request.
Dec 12 16:43:25 mikael NetworkManager[318]: <info>  [1576169005.9105] device (wlp2s2): state change: need-auth -> failed (reason 'no-secrets', sys-iface-state: 'managed')

Я бы сказал, что сеть, к которой вы пытаетесь подключиться, не является открытой, и вы не настроили для нее аутентификацию в wpa-supplicantконфигурационном файле.

Для успешного выполнения ipнижележащие уровни (, также известные как 802.<whatever>), должны работать. Итак, шаги:

  1. Настройте хорошие секреты для wpa-supplicant.
  2. Запуск wpa-supplicant.
  3. Поднимите свой интерфейс.
1
27.01.2020, 23:40

Теги

Похожие вопросы