nmcli is a python wrapper library for the network-manager cli client.
Here is a simple usecase.
import nmcli
try:
print(nmcli.connection())
print(nmcli.device())
print(nmcli.device.wifi())
print(nmcli.general())
nmcli.device.wifi_connect('AP1', 'passphrase')
nmcli.connection.modify('AP1', {
'ipv4.addresses': '192.168.1.1/24',
'ipv4.gateway': '192.168.1.255',
'ipv4.method': 'manual'
})
nmcli.connection.down('AP1')
nmcli.connection.up('AP1')
nmcli.connection.delete('AP1')
except Exception as e:
print(e)
- NetworkManager
sudo apt install network-manager
(Debian)
- User who can execute nmcli with sudo with NOPASSWD
- If sudo is not needed (like root user), use
disable_use_sudo
at the beginning of the process.
- If sudo is not needed (like root user), use
Object | Command | Status |
---|---|---|
general | supported | |
general | status | supported |
general | hostname | supported |
general | permissions | not supported |
general | logging | not supported |
networking | supported | |
networking | on | supported |
networking | off | supported |
networking | connectivity | supported |
radio | supported | |
radio | all | supported |
radio | wifi | supported |
radio | wwan | supported |
connection | supported | |
connection | show | supported |
connection | up | supported |
connection | down | supported |
connection | add | supported |
connection | modify | supported |
connection | clone | not supported |
connection | edit | not supported |
connection | delete | supported |
connection | reload | supported |
connection | load | not supported |
connection | import | not supported |
connection | export | not supported |
device | supported | |
device | status | supported |
device | show | supported |
device | set | not supported |
device | connect | supported |
device | reapply | supported |
device | modify | not supported |
device | disconnect | supported |
device | delete | supported |
device | monitor | not supported |
device | wifi | supported |
device | wifi connect | supported |
device | wifi rescan | supported |
device | wifi hotspot | supported |
device | lldp | not supported |
agent | not supported | |
agent | secret | not supported |
agent | polkit | not supported |
agent | all | not supported |
monitor | not supported |
Get a list of connections.
nmcli.connection() -> List[Connection]
Create a new connection using specified properties.
nmcli.connection.add(
conn_type: str,
options: Optional[ConnectionOptions] = None,
ifname: str = "*",
name: str = None,
autoconnect: bool = None) -> None
Add, modify or remove properties in the connection profile.
nmcli.connection.modify(name: str, options: ConnectionOptions) -> None
Delete a configured connection.
The wait
argument applies the same effect to the command as the --wait
option. If it is omitted, the default behavior is followed.
nmcli.connection.delete(name: str, wait: int = None) -> None
Activate a connection.
The wait
argument applies the same effect to the command as the --wait
option. If it is omitted, the default behavior is followed.
nmcli.connection.up(name: str, wait: int = None) -> None
Deactivate a connection from a device without preventing the device from further auto-activation.
The wait
argument applies the same effect to the command as the --wait
option. If it is omitted, the default behavior is followed.
nmcli.connection.down(name: str, wait: int = None) -> None
Show details for specified connections.
nmcli.connection.show(name: str) -> ConnectionDetails
Reload all connection files from disk.
nmcli.connection.reload() -> None
Print status of devices.
nmcli.device() -> List[Device]
Show status for all devices.
nmcli.device.status() -> List[Device]
Show details of device.
The fields
argument applies the same effect to the command as the -f | --fields
option. If it is omitted, the default behavior is followed.
nmcli.device.show(ifname: str, fields: str = None) -> DeviceDetails
Show details of devices.
The fields
argument applies the same effect to the command as the -f | --fields
option. If it is omitted, the default behavior is followed.
nmcli.device.show_all(fields: str = None) -> List[DeviceDetails]
Connect the device.
The wait
argument applies the same effect to the command as the --wait
option. If it is omitted, the default behavior is followed.
nmcli.device.connect(ifname: str, wait: int = None) -> None
Disconnect devices.
The wait
argument applies the same effect to the command as the --wait
option. If it is omitted, the default behavior is followed.
nmcli.device.disconnect(ifname: str, wait: int = None) -> None
Attempts to update device with changes to the currently active connection made since it was last applied.
nmcli.device.reapply(ifname: str) -> None
Delete the software devices.
The wait
argument applies the same effect to the command as the --wait
option. If it is omitted, the default behavior is followed.
nmcli.device.delete(ifname: str, wait: int = None) -> None
List available Wi-Fi access points.
nmcli.device.wifi(ifname: str = None, rescan: bool = None) -> List[DeviceWifi]
Connect to a Wi-Fi network specified by SSID or BSSID.
The wait
argument applies the same effect to the command as the --wait
option. If it is omitted, the default behavior is followed.
nmcli.device.wifi_connect(ssid: str,
password: str,
ifname: str = None,
wait: int = None) -> None
Create a Wi-Fi hotspot
nmcli.device.wifi_hotspot(ifname: str = None,
con_name: str = None,
ssid: str = None,
band: str = None,
channel: int = None,
password: str = None) -> Hotspot
Request that NetworkManager immediately re-scan for available access points.
nmcli.device.wifi_rescan(ifname: str = None, ssid: str = None) -> None
Show overall status of NetworkManager.
nmcli.general() -> General
Show overall status of NetworkManager.
nmcli.general.status() -> General
Get persistent system hostname.
nmcli.general.get_hostname() -> str
Change persistent system hostname.
nmcli.general.set_hostname(hostname: str) -> None
Get network connectivity state.
nmcli.networking() -> NetworkConnectivity
Switch networking on.
nmcli.networking.on() -> None
Switch networking off.
nmcli.networking.off() -> None
Get network connectivity state.
The optional 'check' argument makes NetworkManager re-check the connectivity.
nmcli.networking.connectivity(check:bool = False) -> NetworkConnectivity
Get status of all radio switches.
nmcli.radio() -> Radio
Get status of all radio switches.
nmcli.radio.all() -> Radio
Turn on all radio switches.
nmcli.radio.all_on() -> None
Turn off all radio switches.
nmcli.radio.all_off() -> None
Get status of Wi-Fi radio switch.
nmcli.radio.wifi() -> bool
Turn on Wi-Fi radio switches.
nmcli.radio.wifi_on() -> None
Turn off Wi-Fi radio switches.
nmcli.radio.wifi_off() -> None
Get status of mobile broadband radio switch.
nmcli.radio.wwan() -> bool
Turn on mobile broadband radio switches.
nmcli.radio.wwan_on() -> None
Turn off mobile broadband radio switches.
nmcli.radio.wwan_off() -> None
Disable the use of sudo.
nmcli.disable_use_sudo() -> None
Change the environment variable LANG from the default C
.
Run this command when you want to use C.UTF-8
.
nmcli.set_lang(lang: str) -> None
- Supported unsupported cases of
DeviceWifi.parse
. - Fixed the problem that
nmcli.general
does not work on nmcli client after version 1.48.x.
- Added rescan parameter to
nmcli.device.wifi
.
- Added support for encodings other than UTF-8.
- Fixed a problem with environment variables being scraped.
- Include LICENSE.txt in the tar.
- Added fields option to
nmcli.device.show
andnmcli.device.show_all
- Handle connection failure exceptions with
nmcli.device.wifi_connect
. - Added wait param to
nmcli.connection.delete
,nmcli.connection.up
,nmcli.connection.down
,nmcli.device.connect
,nmcli.device.disconnect
,nmcli.device.delete
,nmcli.device.wifi_connect
.
- Added ifname param to wifi.
- Added support for changing the LANG environment variable.
- Added ifname param to wifi_connect.
- Fixed a bug in the autoconnect parameter of the nmcli.connection.add method (made the default value conform to the specification of nmcli connection add).
- Added BSSID and FREQ to DeviceWifi.
- Added support for "nmcli device wifi hotspot".
- Added support for "nmcli device wifi rescan".
- Fixed the parsing of device wifi.
- Fixed parsing when SSID has a space.
- Added disabling of sudo usage.
- Added support for parsing the execution results of recent versions of the nmcli device wifi command.
- Fixed device status and device wifi parsing bug.
- Added networking and radio APIs.
- Added more APIs for connection, device and general.
- Changed the properties of the General data class.
- Changed throw a ValueError exception if the regular expression pattern is not matched.
- Fix the parsing bug of connection names that contain spaces (connection.show).
- Added getting items that begin with a capital letter.
- Fix the parsing bug of connection names that contain spaces.
- Added dummy classes.
- Initial release.
MIT