Как получить подключенную Wi-Fi сеть ssid?


8

Я хочу получить ssid в настоящее время подключенных сетей Wi-Fi в сценарии bash. Я пытаюсь написать скрипт резервного копирования, где он будет выполнять резервное копирование на сервер NAS, если он подключен к моей домашней сети Wi-Fi. Я посмотрел на ip routeкоманду, но она только возвращает некоторую основную информацию - введите описание изображения здесь

Ответы:


4

Следующее должно предоставить то, что вы ищете, если вы подключены с помощью 1 беспроводного устройства:

nmcli -t -f ssid dev wifi| cut -d\' -f2

он возвращает все подключенные сети. Могу ли я найти только подключенную сеть?
Чен

Попробуйте вот так и дайте мне знать: nmcli -t -f active, ssid dev wifi | cut -d \ '-f2
Луис Альварадо

По-прежнему возвращает много результатов
Чан

Вы можете вставить то, что вы видите в качестве выхода?
Луис Альварадо

1
Это работает для меня nmcli -t -f active,ssid dev wifi | grep '^yes' | cut -d: -f2 .
Джейкоб Эван Шрив


2

Эта команда возвращает SSID подключенного беспроводного адаптера (при условии, что у вас есть только один).

iwconfig | grep ESSID | sed -e 's/.*ESSID:"\(.*\)".*/\1/'

Он также выводит предупреждение на терминал, но на stderr, так что это не имеет значения

remi@host~$id:~$ id=$(iwconfig | grep ESSID | sed -e 's/.*ESSID:"\(.*\)".*/\1/')
eth0      no wireless extensions.
lo        no wireless extensions.
virbr0    no wireless extensions.
tap0      no wireless extensions.

remi@host:~$ echo $id
CISPI


0
nmcli -t -f NAME connection show --active
  • -t Делает вывод "кратким", поэтому заголовки отсутствуют
  • -f NAME Показывает только ssid
  • --active Показывает только активные соединения

Это печатает ИМЯ соединения, а не SSID. ИМЯ обычно соответствует SSID, но это не всегда так. ИМЯ соединения NetworkManager можно изменить на любое случайное значение.
j123b567


0

С NetworkManager-1.8.4 это дало правильный результат

LANG=C nmcli -t -f active,ssid dev wifi | grep ^yes | cut -d: -f2-

Есть причина для каждой части команды

  • LANG=C потому что мы используем grep для локализованной строки, поэтому форсируем английский
  • nmcli ... -f active,ssid ... вызывает печать ssid с активным статусом в форме yes:myssid no:otherssid
  • grep ^yes мы хотим фильтровать активные соединения, но не идентификаторы SSID с текстом «да», поэтому это является причиной ^
  • cut ... -f2- печатает остаток строки после первого разделителя, чтобы мы могли иметь SSID с разделителем в нем
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.