Scripts
The scripts API can be used to read view and modify the scripts which NSClient++ can run.
List modules
The modules API will respond to get with a list of all currently loaded modules.
You can add all=true
if you want to show modules which are not loaded as well.
This is significantly slower as NSClient++ has to inspect all available modules.
Key | Value |
---|---|
Verb | GET |
Address | /api/v1/modules |
Privilege | modules.list |
Parameters
Key | Value | Description |
---|---|---|
all | true / false | If all scripts should be listed (not activated ones) |
Request
GET /api/v1/modules
Response
[
{
"description": "Module used to execute external scripts",
"id": "CheckExternalScripts",
"loaded": true,
"metadata": {
"plugin_id": "0"
},
"name": "CheckExternalScripts",
"title": "CheckExternalScripts"
},
{
"description": "A server that listens for incoming ...",
"id": "WEBServer",
"loaded": true,
"metadata": {
"plugin_id": "1"
},
"name": "WEBServer",
"title": "WEBServer"
},
{
"description": "A command line client, generally not used except with \"nscp test\".",
"id": "CommandClient",
"loaded": true,
"metadata": {
"plugin_id": "2"
},
"name": "CommandClient",
"title": "CommandClient"
}
]
Example
List all currently loaded modules.
curl -s -k -u admin https://localhost:8443/api/v1/modules |python -m json.tool
[
{
"description": "Module used to execute external scripts",
"id": "CheckExternalScripts",
"loaded": true,
"metadata": {
"plugin_id": "0"
},
"name": "CheckExternalScripts",
"title": "CheckExternalScripts"
},
{
"description": "A server that listens for incoming ...",
"id": "WEBServer",
"loaded": true,
"metadata": {
"plugin_id": "1"
},
"name": "WEBServer",
"title": "WEBServer"
},
{
"description": "A command line client, generally not used except with \"nscp test\".",
"id": "CommandClient",
"loaded": true,
"metadata": {
"plugin_id": "2"
},
"name": "CommandClient",
"title": "CommandClient"
}
]
Get module
Get details about a given module.
Key | Value |
---|---|
Verb | GET |
Address | /api/v1/modules/:module |
Privilege | modules.get |
Request
GET /api/v1/modules/:module
Response
{
"description": "A server that listens for ...",
"id": "WEBServer",
"loaded": true,
"metadata": {
"plugin_id": "1"
},
"name": "WEBServer",
"title": "WEBServer"
}
Example
Fetch details about the WEBServer
module.
curl -s -k -u admin https://localhost:8443/api/v1/modules/WEBServer |python -m json.tool
{
"description": "A server that listens for incoming HTTP connection and processes incoming requests. It provides both a WEB UI as well as a REST API in addition to simplifying configuration of WEB Server module.",
"id": "WEBServer",
"loaded": true,
"metadata": {
"plugin_id": "1"
},
"name": "WEBServer",
"title": "WEBServer"
}
Update module
As most module details are static the only thing which can be changed (currently) is the loaded flag. This can be used to load/unload modules. To execute this command you need multiple privileges first we need modules.get to get a list of modules and then depending on what the desired action is you need either modules.load or modules.unload.
Key | Value |
---|---|
Verb | PUT |
Address | /api/v1/modules/:module |
Privilege | modules.get and modules.load or modules.unload |
Request
PUT /api/v1/modules/:module
The posted payload
The payload we post is the same one we get from a GET
except most attributed are ignored and can be left out:
{
"loaded": true
}
Response
Success unload CheckExternalScripts
Example
An example of unloading the CheckExternalScripts
module:
curl -s -k -u admin -X PUT https://localhost:8443/api/v1/modules/CheckExternalScripts -d "{\"loaded\":false}"
Success unload CheckExternalScripts
Commands
In addition to REST full CRUD operation the module API also supports commands.
- Load module
- Unload modules
Load Module
The load command is a convincing for doing a PUT on the module setting loaded=true
to loading a module.
Key | Value |
---|---|
Verb | GET |
Address | /api/v1/modules/:module/commands/load |
Privilege | modules.get and modules.load |
Request
PUT /api/v1/modules/:module/commands/load
Response
Success load CheckExternalScripts
Example
An example of loading the CheckExternalScripts
module:
curl -s -k -u admin https://localhost:8443/api/v1/modules/CheckExternalScripts/commands/load
Success load CheckExternalScripts
Unload Module
The unload command is a convincing for doing a PUT on the module setting loaded=false
to unload a module.
Key | Value |
---|---|
Verb | GET |
Address | /api/v1/modules/:module/commands/unload |
Privilege | modules.get and modules.unload |
Request
PUT /api/v1/modules/:module/commands/unload
Response
Success unloaded CheckExternalScripts
Example
An example of unloading the CheckExternalScripts
module:
curl -s -k -u admin https://localhost:8443/api/v1/modules/CheckExternalScripts/commands/unload
Success unloading CheckExternalScripts