ฉันจะลบรายการเครือข่ายที่ล้าสมัยจาก Network Connection Applet ได้อย่างไร


17

ฉันเห็นว่าฉันสามารถลบเครือข่ายที่เครื่องของฉัน "จำได้" จาก nm-applet โดยคลิกที่ไอคอนไร้สายในแผงควบคุมและเลือก "แก้ไขการเชื่อมต่อ" -> "ไร้สาย" อย่างไรก็ตามบางครั้งฉันคลิกที่การเชื่อมต่อไร้สายผิดโดยบังเอิญในรายการแบบเลื่อนลง หากการเชื่อมต่อมีความปลอดภัยแน่นอนว่าเครื่องจะไม่เชื่อมต่อได้สำเร็จ แต่อย่างใดก็ยังดูเหมือนว่าจะจดจำ ESSID ได้ เมื่อใดก็ตามที่ฉันอยู่ในช่วงไร้สายนั้นตอนนี้ก็พยายามเชื่อมต่อ

ที่แย่กว่านั้นหากไม่ได้เชื่อมต่อกับเครือข่ายอื่น ๆ ระบบจะขอให้ฉันเชื่อมต่อกับเครือข่ายนี้ซ้ำ ๆ หากปล่อยไว้โดยไม่ต้องใส่ข้อมูลฉันอาจพบหลายสิบสำเนาของหน้าต่างที่แจ้งให้ฉันเข้าสู่เครือข่ายที่ผิดพลาดนี้ ต้องมีไฟล์อยู่ที่ไหนสักแห่งที่บันทึก ID การเชื่อมต่อนี้ แต่ฉันหามันไม่พบ การเชื่อมต่อเดียวที่ปรากฏใน "แก้ไขการเชื่อมต่อ" ที่ฉันพูดถึงข้างต้นเป็นสิ่งที่ฉันเชื่อมต่อจริง ฉันจะค้นหาไฟล์และลบบรรทัดที่สอดคล้องกับเครือข่าย "ท่องจำ" ที่ละเมิดได้อย่างไร

แก้ไขฉันค้นหาวิธีการในการลบเครือข่ายเหล่านั้นออกจากรายการใด ๆ ที่พวกเขาได้รับการเพิ่มเมื่อฉันเลือกพวกเขาครั้งแรก ดูเหมือนว่าพฤติกรรมนี้เป็นข้อบกพร่องในตัวจัดการเครือข่าย (?)

คำตอบ:


23

คุณพยายามลบไฟล์ในไดเรกทอรี/etc/NetworkManager/system-connections/หรือไม่

คุณควรมี 1 ไฟล์สำหรับทุกเน็ตที่คุณพยายามเชื่อมต่อเปิดเทอร์มินัลและใช้คำสั่ง:

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

หากต้องการแสดงรายการไฟล์ทั้งหมดหลังจากคุณพบเครือข่ายที่คุณต้องการลบให้ลบออกด้วยคำสั่ง:

sudo rm /etc/NetworkManager/system-connections/NETWORK_NAME

เยี่ยมมากขอบคุณ! ฉันสงสัยว่าทำไมรายการนี้แตกต่างจากที่ระบุใน Network Applet GUI
cboettig

ผู้ชายคนนี้ทำงาน
Jerric Lyns John

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

คำตอบที่ดี หากต้องการลบการเชื่อมต่อทั้งหมดให้ทำดังนี้: nmcli --fields UUID, TIMESTAMP-REAL con show | awk '{พิมพ์ $ 1}' | ในขณะที่อ่านบรรทัด ทำ nmcli ที่มีการลบ uuid $ line; เสร็จแล้ว
Nadav B

1

หากปัญหาหลักของคุณคือพรอมต์ที่น่ารำคาญที่ขอให้คุณเข้าสู่เครือข่ายเมื่อใดก็ตามที่คุณไม่ได้ใช้งานไร้สายคุณสามารถปิดใช้งานไร้สายได้โดยคลิกที่Enable Wirelessรายการในเมนูตัวบ่งชี้เครือข่าย


ใช่นั่นเป็นโซลูชันปัจจุบันของฉันในพื้นที่เชื่อมต่อที่ไม่ดี อย่างไรก็ตามฉันมักจะไม่ได้รับแจ้งเว้นแต่ฉันพยายามเชื่อมต่อกับเครือข่ายนั้นมาก่อน หากฉันเชื่อมต่อสำเร็จฉันสามารถลบออกจากรายการและไม่ได้รับแจ้งเกี่ยวกับมัน คำถามของฉันเกี่ยวกับตำแหน่งที่จะค้นหาระเบียนสำหรับเครือข่ายที่ไม่ปรากฏขึ้นที่นั่น แต่เครื่องถูกจดจำอย่างชัดเจน ไฟล์บันทึกต้องมีอยู่ที่ใดที่หนึ่ง
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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.