WARNING/NOTE: I wrote all of this based on the N-Able documentation, which says N-Able all over it, but I am now realising this is technically just for N-Sight, not N-Able. I am in the process of renaming and fixing all of the issues this causes.
This is a Python wrapper/library for the NSight Data Extraction API. The NSight API returns data in xml format, this tool will convert those to lists and dictionaries for ease of use.
The official API documentation from NSight can be found here. I have tried to keep my naming scheme similar to theirs.
NOTE:
- This is still in extremely early stages of development, function names may change!
I don't know how to make this yet, so it's Coming Soon
pip install NAbleAPI
To use the NAble API, you will need to know your region and have an API key.
- Import the package
- Get an API key. Follow these instructions to get your API key.
- Find your region (see below)
To find your region, check this page or view table below.
Notes:
- Not all regions have been tested, if your region is marked 'untested' on the table below, please let me know whether it works.
- If your dashboard URL starts with
www2
, assume it is justwww
for the region. - If there is another abbreviation or country code you would like added, let me know!
Dashboard URL | Region | Status |
---|---|---|
www.am.remote.management | americas, ams | Untested |
wwwasia.system-monitor.com | asia | Untested |
www.system-monitor.com | australia, au, aus | Untested |
wwweurope1.systemmonitor.eu.com | europe, eu | Untested |
wwwfrance.systemmonitor.eu.com | france, fr | Untested |
wwwfrance1.systemmonitor.eu.com | france1, fr1 | Untested |
wwwgermany1.systemmonitor.eu.com | germany, de, deu | Untested |
wwwireland.systemmonitor.eu.com | ireland, ie, irl | Untested |
wwwpoland1.systemmonitor.eu.com | poland, pl,pol | Untested |
www.systemmonitor.co.uk | united kingdom, uk, gb, gbr | Verified |
www.systemmonitor.us | united states, us, usa | Untested |
from NAbleAPI import NAble
na = NAble('[YOUR REGION]','[YOUR API KEY]')
Example
na = NAble('uk','f821213a8d3q43843dj39824')
(Not a real API key, don't try to use it)
Gee it sure would be helpful is there was documentation for the available commands. Unfortunately, there isn't right now.
Get all your clients
myNAbleClients = na.clients()
It's probably best not to store your API key in your script. Instead, you can create a .env file and use that.
- Create a new file called
.env
in the root directory - Put your API key in it (do not put it in quotes, type exactly as shown below)
NABLE_KEY = f821213a8d3q43843dj39824
- Get the key from file
from NAbleAPI import NAble # Import the NAble package
import os # Import OS package (built into Python, I'm like 99% sure)
NABLE_KEY = os.getenv("NABLE_KEY")
na = NAble('uk',NABLE_KEY)
The endpoints are grouped by category on NAble's website, so I have done the same below.
I found the names on NAbles site to be a bit long, so I have shortened them a bit. The Function Name
is what you will use in Python.
I'm doing my best to get them all added!
Official NAble documentation page here
Service | Status | Function Name | Description |
---|---|---|---|
list_clients | Working | clients() | List all clients |
list_sites | Working | sites() | List sites for a client |
list_servers | Working | servers() | list servers at a site |
list_workstations | Working | workstations() | list workstations at a site |
list_agentless_assets | Working | agentlessAssets() | List agentless assets at a site |
list_devices_at_client | Working | clientDevices() | List all workstations or servers for a client |
list_device_monitoring_details | Working | deviceDetails() | Get details for a single device |
add_client | Working | addClient() | Add a client |
add_site | Working | addSite() | Add a site |
get_site_installation_package() | Partially Working | siteInstallPackage | Create/Get a site installation package (returns rawbytes right now) |
Official NAble documentation page here
Service | Status | Function Name | Description |
---|---|---|---|
list_checks | Working | checks() | List all checks for a device |
list_failing_checks | Working | failingChecks() | List all failing checks |
list_check_config | Working | checkConfig() | Get a single checks configuration |
get_formatted_check_output | Working | formattedCheckOutput() | Get first line of check result |
list_outages | Working | checks() | List all outages for a device |
list_performance_history | Untested | performanceHistory() | Get performance history of a device |
list_drive_space_history | Working | driveSpaceHistory() | Get Device Storage History |
list_exchange_storage_history | Untested | exchangeStorageHistory() | Get Exchange Storage History |
clear_check | Untested | clearCheck() | Clear a check |
add_check_note | Working | addNote() | Add note to a check |
list_templates | Working | templates() | List all server/workstation monitoring templates |
Official NAble documentation page here
Service | Status | Function Name | Description |
---|---|---|---|
list_supported_av_products | Working | supportedAVs() | Lists supported AVs |
list_av_definitions | Working | AVDefinitions() | Get definitions for specific AV Product |
get_av_definition_release_date | Working | AVDefinitionsReleaseDate() | Get release date of specific AV version |
list_av_history | Working | AVHistory() | List last 60s of AV status (I got 90 though...) |
Official NAble documentation page here
Service | Status | Function Name | Description |
---|---|---|---|
list_backup_history | Untested | backupHistory() | Get last 60 days of backup history for device |
Official NAble documentation page here
Service | Status | Function Name | Description |
---|---|---|---|
list_all_hardware | Working | assetHardware() | Get all hardware for an asset |
list_all_software | Working | assetSoftware() | Get all software for an asset |
list_license_groups | Working | licenseGroups() | Get software license groups for account |
list_license_groups | Working | licenseGroupItems() | Get all software license groups for account/tenant |
list_license_group_items | Working | clientLicenseCount() | Get software in a software license group |
list_client_license_count | Untested | assetLicensedSoftware() | Get client software license counts |
list_device_asset_details | Working | assetDetails() | Get asset information from device ID |
Official NAble documentation page here
Service | Status | Function Name | Description |
---|---|---|---|
list_wallchart_settings | Working | wallchartSettings() | Get general wallchart settings |
list_general_settings | Working | generalSettings() | Get general account settings |
Official NAble documentation page here
These may be moved to their own subclass in the future!
Service | Status | Function Name | Description |
---|---|---|---|
patch_list_all | Working | listPatches() | List all patches for a device |
patch_approve | Working | approvePatches() | Approve patch(es) for a device |
patch_do_nothing | Working | doNothingPatches() | Do nothing on patch(es) for a device |
patch_ignore | Working | ignorePatches() | Ignore patch(es) for a device |
patch_reprocess | Working | reprocessPatches() | Reprocess patch(es) for a device |
patch_retry | Working | retryPatches() | Retry patch(es) for a device (think this is the same as reprocess) |
Official NAble documentation page here
Service | Status | Function Name | Description |
---|---|---|---|
mav_quarantine_list | Untested | mavQuarantine() | Get quarantined threats for a device |
mav_quarantine_release | Untested | mavQuarantineRelease() | Release threat(s) from Managed Antivirus quarantine |
mav_quarantine_remove | Untested | mavQuarantineRemove() | Remove threat(s) from Managed Antivirus quarantine |
mav_scan_start | Working | mavScanStart() | Start quick scan on a device |
mav_scan_pause | Working | mavScanPause() | Pause scan on a device |
mav_scan_resume | Working | mavScanResume() | Resume/unpause scan on a device |
mav_scan_cancel | Working | mavScanCancel() | Cancel scan on a device |
mav_scan_device_list | Working | mavScanList() | Get a list of scans for a device |
list_mav_scans | Working | mavScans() | Get a list of scans for a device |
list_mav_threats | Working | mavThreats() | Get the most recent occurence of each threat found on a device |
list_mav_quarantine | Untested | mavQuarantineList() | ??? |
mav_definitions_update | Working | mavUpdate() | Update the bitdefender definitions on a device |
Official NAble documentation page here
Service | Status | Function Name | Description |
---|
Official NAble documentation page here
Service | Status | Function Name | Description |
---|
Official NAble documentation page here
Service | Status | Function Name | Description |
---|