System
30 min
the system module covers device administration users, tokens, network, ldap, certificates, events, external storage, services, and device management imports from litmussdk system import ( users, tokens, network, ldap, certificates, events, external storage, general, device management, services, templates, wifi, ) general info version = general get version() # str, firmware version string fw = general firmware info() # dict mem = general memory info() # dict storage = general storage info() # dict cpu = general cpu info() # list\[dict] net = general network info() # list\[dict] macs = general mac address() # list\[dict] modem = general modem info() # list\[dict] users user accounts \# list / get all users = users list users() # list\[dict] user = users get user by id(user id) # dict \# create user = users create user( first name="jane", last name="doe", username="jdoe", password="s3cr3t", must change password=false, ) user id = user\["id"] \# update users update user( user id=user id, current password="s3cr3t", new password="n3wpass", new first name="jane", new last name="doe", new user name="jdoe", ) \# delete users delete user(user id) user groups groups = users get user groups() # list\[dict] details = users get user group details(group id) group = users create user group("operators") group id = group\["id"] users add users to group(group id, \[user id]) users update user group name(group id, "engineers") users delete user group(group id) user roles roles = users get user roles() role = users add user role(name="viewer") users update user role(user role=role\["id"], name="reader") users delete user role(role\["id"]) tokens api keys keys = tokens get api keys() # list\[dict] key = tokens create api key("my key") key id = key\["id"] tokens validate api key("my key") tokens show api key by id(key id) tokens update api key(key id, "renamed key") tokens delete api key by id(key id) oauth clients from datetime import datetime clients = tokens get oauth clients() # list\[dict] client = tokens create oauth client( client name="my sdk client", groups={"admin"}, expiry date=none, # or a datetime for expiry token ttl minutes=5, ) client id = client\["id"] tokens get oauth client by id(client id) tokens rename oauth client(client id, "renamed client") tokens delete oauth client by id(client id) network \# device info info = network device network info() iface = network network interface details("eth0") config = network network interface config() rules = network firewall rules() \# names / locale name = network get friendly name() network set friendly name("my edge device") country = network get country() network set country("ca") \# time network set timezone("america/toronto") timezones = network available timezones() network set ntp servers(\["pool ntp org"]) import datetime network set system clock( date=datetime date(2025, 1, 15), time=datetime time(12, 0, 0), ) \# dns / docker network set dns resolvers(\["8 8 8 8", "1 1 1 1"]) network set docker config(docker binding ip="10 30 50 1/24") packet capture interfaces = network get packet capture interfaces() status = network packet capture status() network start stop packet capture(action="start", interface="eth0", duration="30s") network start stop packet capture(action="stop") modem modems = network list available modems() network update modem config(imei="123456789012345", apn="broadband") wi fi ifaces = wifi wifi interfaces() status = wifi wifi interfaces status("wlan0") networks = wifi wifi interfaces networks("wlan0") known = wifi wifi known networks() wifi wifi connect with password(ssid="mynetwork", password="wifi pass") wifi wifi forget network("mynetwork") ldap providers = ldap list auth providers() details = ldap auth providers details(provider id) status = ldap ldap provider status(provider id) groups = ldap ldap provider user group(provider id) \# create provider = ldap create new auth providers( host="ldap example com", port=389, base dn="dc=example,dc=com", \# driver specific kwargs ) \# test config before saving ldap ldap test config(host="ldap example com", base dn="dc=example,dc=com") \# update / delete ldap update ldap config(provider id, host="ldap2 example com") ldap delete ldap config(provider id) certificates \# device certificate cert = certificates get device certificate() csr = certificates get csr() certificates add device certificate( ca chain=" begin certificate \n ", certificate=" begin certificate \n ", cert key=" begin private key \n ", ) certificates reset device certificate() \# custom ca ca = certificates get custom ca certificate() \# identity certificates identity = certificates show device identity() id certs = certificates get identity certificates() certificates install identity certificates(ca chain=" ", certificate=" ") certificates delete identity certificates(ca chain=" ", certificate=" ") events import time now = int(time time() 1000) one hour ago = now 3 600 000 result = events get events( from timestamp=one hour ago, to timestamp=now, component="devicehub", # optional filter severity="error", # optional filter count=50, offset=0, ) \# result {events \[ ], total int} stats = events event management stats() reports = events events zero touch reports() external storage cifs (smb) mounts \# list mounts = external storage list attached storages() \# create external storage create new cifs mount( name="nas share", share="//192 168 1 100/data", username="user", password="pass", domain="workgroup", mount on boot=true, read only=false, ) \# get / update details = external storage get cifs mount details("nas share") external storage update cifs mount( cifs mount name="nas share", share="//192 168 1 100/data2", username="user", password="newpass", domain="workgroup", mount on boot=true, read only=false, name="nas share", ) ftp mounts external storage create ftp mount( name="ftp backup", share="ftp example com/backups", username="ftpuser", password="ftppass", mount on boot=true, read only=true, ) details = external storage get ftp mount details("ftp backup") external storage update ftp mount( ftp mount name="ftp backup", name="ftp backup", share="ftp example com/backups2", username="ftpuser", password="newpass", mount on boot=true, read only=false, ) mount / unmount / delete external storage mount attached storage("nas share") external storage unmount attached storage("nas share") external storage delete mount point("nas share") services all services = services show available services() status = services show service status("mosquitto") ftp status = services ftp service status() ssh status = services ssh service status() services start and enable service("mosquitto") services stop and disable service("mosquitto") ftp users user = services create ftp user("ftpuser") services reset ftp user password("ftpuser", "newpass") services delete ftp user("ftpuser") device management \# cloud registration status = device management show cloud registration status() device management register with cloud("activation code") device management de register with cloud() \# cloud manager url url = device management show cloud url() device management set cloud url("https //manager example com") \# backup interval = device management show backup interval() # {interval int} device management set backup interval(24) # hours \# software updates = device management list software updates() \# power, use with caution device management reboot device() device management shutdown device() device management factory reset() # irreversible templates system templates let you export and re apply a device configuration snapshot \# see what can be included items = templates list available configurable items() \# export full template full = templates download template complete() \# export selective template partial = templates download template( dns=true, ntp=true, timezone=true, devices=\["device id 1"], flows=\["flow id 1"], ) \# apply a template templates apply template(partial) 2 6 0 fix in versions <2 6 0, download template complete() raised typeerror on every call due to a wrong internal kwarg name fixed in 2 6 0 now works as documented license copyright (c) litmus automation inc