Connection Manager简称connman,connman是使用d-bus做为进程间通信机制来管理Linux网络链接的一种软件。在connman的d-bus接口中,有一个接口叫做service。该接口的全称为:net.connman.Service,自然是挂在net.connman上面的。做为net.connman.Service接口,它可以访问到network的细节以及用户偏好使用什么类型的网络(比如3g、wifi、wimax等等)。外部的程序就通过net.connman.Service的一堆Properties和Methods来实现它基本的功能。(可能诠释的不对,可能是整体的connman的功能)
核心的逻辑如下:connman维护一个信号标记并且将所有可能连接上的网络服务建成一个列表(分类成普通网络、用户喜欢的以及上次使用的网络)。做为网络服务,它可以是以太网设备,WIFI,WIMAX,或者是远程蓝牙设备(比如手机)。
这个列表的分类和排序是由connman内部实现,没必要由使用它的用户来决定怎么去将网络排序之类的。用户的决定(比如链接WIFI、关闭以太网等等)会通过connman实现,与此同时connman会重新对列表中的网络服务进行排序。
Related articles
ConnMan is a command-line network manager designed for use with embedded devices and fast resolve times. It is modular through a plugin architecture, but has native DHCP and NTP support.
Install the connman package. wpa_supplicant and bluez are optional dependencies required for Wi-Fi and Bluetooth functionality respectively.
Before enabling connman.service
, ensure any existing network configuration is disabled.
https://github.com/andrew-bibb/cmst || cmstAUR
https://github.com/eurogiciel-oss/connman-json-client || connman-ncurses-gitAUR
https://github.com/wavexx/connman-notify || connman-notifyAUR[broken link: archived in aur-mirror]
https://github.com/tbursztyka/connman-ui || connman-ui-gitAUR
https://github.com/taylorchu/connman_dmenu || connman_dmenu-gitAUR
http://www.enlightenment.org || econnmanAUR
https://github.com/surlykke/lxqt-connman-applet || lxqt-connman-applet-gitAUR
https://github.com/OSSystems/qconnman-ui || qconnman-ui-gitAUR[broken link: archived in aur-mirror]
https://github.com/jgke/connman-gtk || connman-gtkAUR
https://github.com/jgke/gnome-extension-connman || https://extensions.gnome.org/extension/981/connman-extension/
This article or section needs expansion.
Reason: Only Wired and Wi-Fi plugins are described. (Discuss in Talk:ConnMan#)
ConnMan has a standard command line client connmanctl
. It can run in 2 modes:
connmanctl
command, just like systemctl.connmanctl
without arguments. Prompt will change to connmanctl>
to indicate it is waiting for user commands, just like python interactive mode. The interactive mode supports tab completion, which makes finding the correct connection easy.ConnMan will automatically handle wired connections.
To check if wifi is enabled you can run connmanctl technologies
and check for the line that says Powered: True/False
. To power the wifi on you can run connmanctl enable wifi
or if you need to disable it you can run connmanctl disable wifi
. Other ways to enable wifi could include using the Fn
keys on the laptop to turn it on or running ip link set <interface> up
.
The commands in this section show how to run connmanctl
in command mode.
To scan the network connmanctl
accepts simple names called technologies. To scan for nearby Wi-Fi networks:
$ connmanctl scan wifi
To list the available networks found after a scan run (example output):
$ connmanctl services
*AO MyNetwork wifi_dc85de828967_68756773616d_managed_psk
OtherNET wifi_dc85de828967_38303944616e69656c73_managed_psk
AnotherOne wifi_dc85de828967_3257495245363836_managed_wep
FourthNetwork wifi_dc85de828967_4d7572706879_managed_wep
AnOpenNetwork wifi_dc85de828967_4d6568657272696e_managed_none
To connect to an open network, use the second field beginning with wifi_
:
$ connmanctl connect wifi_dc85de828967_4d6568657272696e_managed_none
Tip: Network names can be tab-completed.
You should now be connected to the network. Check using ip addr
or connmanctl state
.
For protected access points you will need to provide some information to the ConnMan daemon, at the very least a password or a passphrase.
The commands in this section show how to run connmanctl
in interactive mode, it is required for running the agent
command. To start interactive mode simply type:
$ connmanctl
You then proceed almost as above, first scan for any Wi-Fi technologies:
connmanctl> scan wifi
To list services:
connmanctl> services
Now you need to register the agent to handle user requests. The command is:
connmanctl> agent on
You now need to connect to one of the protected services. To do this easily, just use tab completion for the wifi_ service. If you were connecting to OtherNET in the example above you would type:
connmanctl> connect wifi_dc85de828967_38303944616e69656c73_managed_psk
The agent will then ask you to provide any information the daemon needs to complete the connection. The information requested will vary depending on the type of network you are connecting to. The agent will also print additional data about the information it needs as shown in the example below.
Agent RequestInput wifi_dc85de828967_38303944616e69656c73_managed_psk
Passphrase = [ Type=psk, Requirement=mandatory ]
Passphrase?
Provide the information requested, in this example the passphrase, and then type:
connmanctl> quit
If the information you provided is correct you should now be connected to the protected access point.
Settings and profiles are automatically created for networks the user connects to often. They contain fields for the passphrase, essid and other information. Profile settings are stored in directories under /var/lib/connman/
by their service name. To view all network profiles run this command from root shell:
# cat /var/lib/connman/*/settings
Note: VPN settings can be found in /var/lib/connman-vpn/
.
Various hardware interfaces are referred to as Technologies by ConnMan.
To list available technologies run:
$ connmanctl technologies
To get just the types by their name one can use this one liner:
$ connmanctl technologies | awk '/Type/ { print $NF }'
Note: The field Type = tech_name
provides the technology type used with connmanctl
commands
To interact with them one must refer to the technology by type. Technologies can be toggled on/off with:
$ connmanctl enable technology_type
and:
$ connmanctl disable technology_type
For example to toggle off wifi:
$ connmanctl disable wifi
Warning: connman grabs rfkill events. It is most likely impossible to use rfkill
or bluetoothctl
to (un)block devices, yet hardware keys may still work.[1] Always use connmanctl enable|disable
手机扫一扫
移动阅读更方便
你可能感兴趣的文章