ใช้ Network-Manager เพื่อเชื่อมต่อกับจุดเชื่อมต่อ WiFi บนบรรทัดคำสั่ง


26

ฉันต้องการเชื่อมต่อกับจุดเชื่อมต่อไร้สายจากบรรทัดคำสั่ง เป็นการดีที่ฉันต้องการเพียงชื่อของ AP แต่ที่อยู่ฮาร์ดแวร์ก็ใช้ได้เช่นกัน

ฉันรู้ว่าฉันสามารถใช้nmcliเพื่อเชื่อมต่อกับการเชื่อมต่อเครือข่ายที่มีการจัดการ แต่ในกรณีของฉันจุดเชื่อมต่ออาจยังไม่ได้รับการกำหนดค่าสำหรับ Network-Manager (ดูความแตกต่างระหว่างเอาต์พุตของnm-toolและnmcli con)

ตัวอย่างผลลัพธ์ของnmcli:

Auto pwln       3a3d62b1-bbdf-4f76-b4d2-c211fd5cfb03   802-11-wireless [...]  
Wired Network   aa586921-accf-4932-98c4-c873c310f08e   802-3-ethernet [...]  
Cisco-UDP Uni   7f94847b-04dc-40b7-9955-5246fb77cc65   vpn [...]  
T-mobile (D1)   867f345a-cbbf-4bd4-b883-a5e5ae0932f0   gsm  [...]

ตัวอย่างผลลัพธ์ของnm-tool:

State: connected
- Device: eth1  [Auto pwln] ----------------------------------------------------
[...]
  Wireless Access Points (* = current AP)
    *pwln: Infra, [...], Freq 2472 MHz, Rate 54 Mb/s, Strength 80 WPA WPA2
    WLAN:  Infra, [...], Freq 2422 MHz, Rate 54 Mb/s, Strength 20 WPA WPA2

[...]

ฉันจะเชื่อมต่อกับจุดเชื่อมต่อที่อาจรู้จักหรือไม่รู้จักกับ NM ได้อย่างไร

พิเศษ: การค้นหาว่าการเชื่อมต่อนั้นต้องการวลีรหัสผ่านหรือไม่และส่งไปที่ command-line ก็จะดีเช่นกัน (กล่าวคือมันจะดีถ้าผู้จัดการเครือข่ายจะไม่เปิดกล่องโต้ตอบสำหรับพวงกุญแจหรือ ข้อผิดพลาดใน GUI)

คำตอบ:


6

คุณสามารถใช้cnetworkmanagerสำหรับสิ่งนี้

แก้ไข:

หลังจากการสอบสวนบางอย่างเห็นได้ชัดว่าเป็นไปไม่ได้ที่จะเรียกใช้ "ผู้ให้บริการกำหนดค่าผู้ใช้" สองคน (แอปพลิเคชั่นฟังที่ที่อยู่ dbus ที่แน่นอน) ในเวลาเดียวกันและ cnetworkmanager จำเป็นต้องทำเช่นนั้น ตั้งค่าการเชื่อมต่อแล้ว)

ตอนนี้สิ่งที่คุณสามารถทำได้คือเพิ่มข้อมูลสำหรับการเชื่อมต่อกับ gconf ภายใต้/system/networking/connectionsคีย์ (คุณสามารถทำได้จาก commandline หรือสคริปต์) จากนั้นใช้ dbus หรือเครื่องมือบรรทัดคำสั่งเช่น cnetworkmanager หรือ nmcli เพื่อเชื่อมต่อกับมัน บางทีคุณอาจต้องเพิ่มรหัสลงในพวงกุญแจของผู้ใช้ก่อน (เพื่อหลีกเลี่ยงป๊อปอัปรหัสผ่าน)

แต่แน่นอนว่าจะไม่ทำงานบนเดสก์ท็อปที่ใช้ไคลเอ็นต์ NM อื่นนอกเหนือจาก nm-applet (เช่น KDE) คุณจะต้องหาวิธีกำหนดค่าสำหรับพวกเขาด้วย ...

แก้ไข 2:

ดูเหมือนว่าอาจเป็นไปได้ผ่านทางorg.freedesktop.NetworkManagerUserSettingsระบบ DBus แต่ทั้งหมดนี้เป็นเอกสาร IMO ที่ไม่ดี ...

คุณอาจต้องการที่จะอ่านเกี่ยวกับการตั้งค่าและข้อมูลจำเพาะของอินเตอร์เฟซ DBus

และนี่คือตัวอย่างที่เกี่ยวข้อง (คุณอาจต้องการตั้งค่าการเชื่อมต่อผู้ใช้แทนการเชื่อมต่อระบบ)


ยังคงไม่มีอะไร. น่าเสียดายที่ cnetworkmanager จะทำงานไม่ถูกต้องนอกเหนือจาก networkmanager-applet ("แอปเพล็ตอื่นกำลังทำงานอยู่")
Stefano Palazzo

ฉันอ่านเกี่ยวกับวิธีการทำงานของ NM & nm-applet & แก้ไขคำตอบ
JanC

11

คุณสามารถทำได้โดยตรงโดยใช้nmcliแม้ว่าจะยังไม่ได้กำหนดค่าการเชื่อมต่อใน Network Manager:

nmcli dev wifi con "myssid" password "myssidpassword"

หากคุณไม่ต้องการเก็บรหัสผ่านไร้สายไว้ในประวัติของคุณในเวอร์ชันล่าสุด (อาจใหม่กว่าที่ระบุไว้ด้านล่าง) คุณสามารถเพิ่ม--askเพื่อให้ nmcli แจ้งให้คุณทราบถึงข้อมูลที่ขาดหายไปตามที่ต้องการ

nmcli --ask device wifi connnect "myssid"

สิ่งอำนวยความสะดวกนี้ถูกเพิ่มใน Network Manager 0.9.6 ดังนั้นจึงสามารถใช้งานได้ใน Ubuntu 12.10 หรือใหม่กว่าเท่านั้น

นอกจากนี้คุณยังสามารถรับรายการจุดเชื่อมต่อที่มีอยู่ด้วย:

nmcli dev wifi list

conไม่รู้จักnmcli dev wifi
kaiser

คุณใช้เวอร์ชั่นอะไร มันใช้งานได้สำหรับฉันและบันทึกไว้เป็นตัวอย่างใน manpage
Robie Basak

nmcli -vis0.9.4.0
kaiser

ดังนั้นคุณใช้ 12.04? ตามที่ฉันพูดในคำตอบของฉันนี้ใช้ได้เฉพาะกับ Ubuntu 12.10 หรือใหม่กว่าเท่านั้น
Robie Basak

นี่อาจเป็นกรณี ฉันสงสัยว่าฉันจะทำได้sudo apt-get updateมัน
ไกเซอร์

2

คุณสามารถใช้ iwconfig (wifitools) สำหรับการเข้ารหัส wep หรือ wpa_supplicant สำหรับ wpa และ wep และคุณใช้ wicd-curses ถ้าคุณกำลังมองหาบางอย่างง่ายขึ้นโชคดี =)


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

1

คุณสามารถตรวจสอบ iwconfig และ iwlist:

  • iwconfigจัดการกับพารามิเตอร์ไร้สายพื้นฐาน
  • iwlistอนุญาตให้เริ่มต้นการสแกนและรายการความถี่, บิตเรต, คีย์เข้ารหัส ...

มีตัวเลือกมากมาย ลองดูเครื่องมือไร้สายสำหรับ Linuxสำหรับข้อมูลเพิ่มเติม


2
อย่างที่ฉันบอกไปแล้วว่าฉันต้องการผสานรวมกับผู้จัดการเครือข่ายไม่ใช่แทนที่
Stefano Palazzo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.