Как удалить устаревшие записи сети из апплета сетевого подключения

17

Я вижу, что могу удалить сети, которые моя машина «запоминает» из nm-апплета, щелкнув значок беспроводной сети на панели и выбрав «изменить подключения» -> «беспроводная связь». Однако иногда в раскрывающемся списке я случайно выбираю неправильное беспроводное соединение. Если соединение безопасное, машина, конечно, никогда не соединится успешно, но каким-то образом она все равно запоминает ESSID. Всякий раз, когда я нахожусь в зоне действия этого беспроводного устройства, оно теперь пытается подключиться.

Хуже того, если он не подключен к какой-либо другой сети, он неоднократно предлагает мне подключиться к этой сети. Если оставить без присмотра, я могу найти десятки копий окна, предлагающего мне войти в эту ошибочную сеть. Где-то должен быть файл, в котором записан этот идентификатор соединения, но я не могу его найти. Единственные соединения, которые появляются в «редактировании соединений», о которых я упоминал выше, это те, к которым я действительно подключился. Как мне найти файл и удалить строку, соответствующую «нарушенной» сети?

РЕДАКТИРОВАТЬ Я ищу решение, чтобы удалить эти сети из списка, в который они добавляются, когда я впервые выбираю их. Похоже, это поведение является ошибкой в ​​сетевом менеджере (?)

cboettig
источник

Ответы:

23

Вы пытались удалить файлы в каталоге /etc/NetworkManager/system-connections/?

У вас должен быть 1 файл для каждой сети, к которой вы пытались подключиться, откройте терминал и используйте команды:

sudo ls -l /etc/NetworkManager/system-connections/

Чтобы вывести список всех файлов, после того как вы нашли сеть, которую хотите удалить, удалите их с помощью команды:

sudo rm /etc/NetworkManager/system-connections/NETWORK_NAME
ricciocri
источник
Круто, спасибо! Интересно, почему этот список отличается от представленного в графическом интерфейсе сетевого апплета?
cboettig
Это работал человек.
Джеррик Линс Джон
2
После перезагрузки эти имена снова появляются!
Анвар
6

Вы можете удалить соединения, используя nmcli con delete (CONNECTION_NAME)

Чтобы удалить все соединения, которые никогда не использовались (без рута)

nmcli --fields UUID,TIMESTAMP-REAL con show | grep never |  awk '{print $1}' | while read line; do nmcli con delete uuid  $line;    done
Postadelmaga
источник
Отличный ответ. Чтобы удалить все соединения, выполните: nmcli --fields UUID, TIMESTAMP-REAL con show | awk '{print $ 1}' | пока читаешь строку; do nmcli con удаляет строку uuid $; сделано
Надав B
1

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

Hashken
источник
Да, это мое текущее решение в области плохой связи. Тем не менее, я обычно не получаю приглашение, если я не пытался подключиться к этой сети раньше. Если я успешно подключился, я могу удалить его из списка и не получать подсказки об этом. Мой вопрос о том, где найти запись для сетей, которые там не отображаются, но четко запоминаются машиной. Файл записи должен где-то
cboettig
0

Добавив больше гибкости к предыдущему ответу @Postadelmaga, я потратил больше усилий на печать названия удаляемого SSID. Это добавило трудности: теперь нам нужно избегать возможности того, чтобы имя SSID, содержащее слово «никогда», случайно не совпадало с отметкой времени, содержащей «никогда».

Я также создал другую функцию, которая удаляет соединение по имени.

Источники по адресу: https://github.com/frgomes/debian-bin/blob/master/bash_20nm.sh

#!/bin/bash

function nmcli_list {
  nmcli --pretty --fields NAME,UUID,TIMESTAMP-REAL con show
}

function nmcli_remove {
  if [ ! -z "$1" ] ;then
    nmcli --fields NAME con show | \
      grep "$@" | \
        while read name ;do 
          echo Removing SSID "$name"
          nmcli con delete "$name"
        done
  fi
}

##################################################################################
# The intent here is avoid that a connection named "never drive after you drink" #
# matches a timestamp "never". So, we have to make sure that we match colon      #
# followed by "never" followed by spaces and/or tabs and finally an end of line. #
#                                                                                #
# WARNING: However, I didn't get a chance to test this scenario.                 #
#          So, I provide this code the way it is, in the hope that I've covered  #
#          well the behavior from some other simulations I did.                  #
##################################################################################

function nmcli_remove_never_used {
  nmcli --terse --fields NAME,TIMESTAMP-REAL con show | \
    egrep -e ':never[ \t]*$' | \
      sed -r 's/:never[ \t]*$//' | \
        while read name ;do
          echo Removing SSID "$name"
          nmcli con delete "$name"
        done
}

Затем вы можете удалить конкретное соединение, как показано ниже:

$ nmcli_remove ScalaX
$ nmcli_remove "My WiFi @ Home"
$ nmcli_remove "never drive after you drink"
Ричард Гомес
источник
0

Удалить все соединения:

nmcli --pretty --fields UUID,TYPE con show | grep wifi | awk "{print $1}" | while read line; do nmcli con delete uuid  $line; done
user3377121
источник