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 = False) -> None
Add, modify or remove properties in the connection profile.
nmcli.connection.modify(name: str, options: ConnectionOptions) -> None
Delete a configured connection.
nmcli.connection.delete(name: str) -> None
Activate a connection.
nmcli.connection.up(name: str) -> None
Deactivate a connection from a device without preventing the device from further auto-activation.
nmcli.connection.down(name: str) -> 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.
nmcli.device.show(ifname: str) -> DeviceDetails
Show details of devices.
nmcli.device.show_all() -> List[DeviceDetails]
Connect the device.
nmcli.device.connect(ifname: str) -> None
Disconnect devices.
nmcli.device.disconnect(ifname: str) -> 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.
nmcli.device.delete(ifname: str) -> None
List available Wi-Fi access points.
nmcli.device.wifi() -> List[DeviceWifi]
Connect to a Wi-Fi network specified by SSID or BSSID.
nmcli.device.wifi_connect(ssid: str, password: str) -> 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
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