Package: pyimi
pyimipyimi is anunsupported, yet useful, python library for accessing IGEL's IMI.OverviewQuery for information about your IGEL endpointsTake actions such as reboot, shutdown, wakeup, send UMS settings and factory resetAssign profiles, move devices, create directoriesQuery for asset inventory information (peripherals attached to the endpoints USB or bluetooth interface)Dependenciespyimi depends on the Python requests library:Python Requests- Requests is an elegant and simple HTTP library for Python, built for human beings.InstallationInstall the requests library like this.$pipinstallrequestsNext, install pyimi itself like this$pipinstallpyimiSome example codefrompyimiimportIMI,Devices,Directories,Profiles,Assets# First, create your IMI sessionimi=IMI(server='192.168.56.12',user='igel',password='igel#123')# retrieve a list of your devicesdevices=Devices(imi)# and also a list of your directoriesdirectories=Directories(imi)# and also a list of your Profilesprofiles=Profiles(imi)# you can iterate through the retreived itemsfordeviceindevices:print(device.name)fordirectoryindirectories:print(directory.name)forprofileinprofiles:print(profile.name)# Or, to find a paricular device, you can search# by name, IP address, or MAC, or UMS assigned iddevice1=devices.find(name="ITC080027B8A48E")device2=devices.find(ip="192.168.56.104")device3=devices.find(mac="080027B8A48E")device4=devices.find(id="35591")ifdevice1:print("device1 IP address is",device1.ip)ifdevice2:print("device2 name is",device2.name)# You can also filter the device list to return a# sub list of devices whose info property has a# matching key/value to the filter.# Note: to find the possible keys for filter, check# the dictionary returned by the device info property.filtered_devices=devices.filter("site","Downtown")fordeviceinfiltered_devices:print(device.name)# Check if your device is online like thisprint("Is device1 online?",device1.online)print("Is device2 online?",device2.online)# Check when the device last contacted UMSprint("device1 contacted UMS at",device1.lastContact)# You can find a directory by namemy_directory=directories.find(name="Portland")ifmy_directory:print("Found directory")else:print("directory was not found")# Create a new directory for devices like thisdirectories.create("Vancouver")# update the directories variable since there's a new dirctorydirectories=Directories(imi)# Now that you have both a device and a directory,# you can move the device into that directorydevice1.move(my_directory)# And you can also move a device directory into another directorymy_directory2=directories.find(name="Bend")my_directory2.move(my_directory)# Here's how you assign a profile to a device or a directorybrowser_profile=profiles.find(name='Browser')device1.assign(browser_profile)my_directory.assign(browser_profile)# And then you can unassign a profile like thisdevice1.unassign(browser_profile)my_directory.unassign(browser_profile)# Get some additional information about your deviceprint("Information about device:",device1.info)# Run some commands on your devicedevice1.reboot()device1.shutdown()device1.wakeup()device1.settings2tc()# If this device has an EMP (Enterprise Mgmt Pack) license,# query for it's Asset Inventory Tracker information.device_assets=device1.assetsprint("Assets for thin client",device1.name)forassetindevice1.assets:print("asset name:",asset.name,"asset id",asset.id)print("history of this asset on this device")forhistoryinasset.history:print(history['ctime'],history,"\n")# Factory reset a devicedevice1.factory()# For now, when you factory a device# you should retrieve all devices again to have a# valid list# retrieve a list of your assets through Asset Inventory Trackerassets=Assets(imi)# you can iterate through the retreived itemsforassetinassets:print("Name of asset:",asset.name)print("Info about asset")forinfoinasset.info:print(info,"\n")print("History of asset")forhistoryinasset.history:print(history['ctime'],history,"\n")print()# Set extra information tags on your devicesdevice1.name="IGEL-1"device1.site="Downtown"device1.costCenter="Anyone but us"device1.comment="no comment!!!"device1.assetID="123456789"device1.inserviceDate="01/21/20"device1.serialNumber="3495712"print("Comment for this device",device1.comment)print("Asset ID for this device",device1.assetID)print("This device is located at",device1.site)print("And this place paid for it",device1.costCenter)# retrieve custom device attributes for a deviceforattributeindevice1.attributes:print(attribute['name'],':',attribute['value'])LicenseMIT