script.create
Descrizione
object script.create(object/array scripts)
Questo metodo consente di creare nuovi script.
Questo metodo è disponibile solo per il tipo di utente Super admin. Le autorizzazioni per chiamare il metodo possono essere revocate nelle impostazioni del ruolo utente. Per ulteriori informazioni, vedere Ruoli utente.
Parametri
(object/array) Script da creare.
Il metodo accetta script con le proprietà standard degli script.
Restituisce i valori
(object) Restituisce un oggetto contenente gli ID degli scripts creati
sotto la proprietà scriptids. L'ordine degli ID restituiti corrisponde a
ordine degli scripts passati.
Esempi
Creare uno script webhook
Creare uno script webhook che invii una richiesta HTTP a un servizio esterno.
{
"jsonrpc": "2.0",
"method": "script.create",
"params": {
"name": "Webhook script",
"command": "try {\n var request = new HttpRequest(),\n response,\n data;\n\n request.addHeader('Content-Type: application/json');\n\n response = request.post('https://localhost/post', value);\n\n try {\n response = JSON.parse(response);\n }\n catch (error) {\n response = null;\n }\n\n if (request.getStatus() !== 200 || !('data' in response)) {\n throw 'Unexpected response.';\n }\n\n data = JSON.stringify(response.data);\n\n Zabbix.log(3, '[Webhook Script] response data: ' + data);\n\n return data;\n}\ncatch (error) {\n Zabbix.log(3, '[Webhook Script] script execution failed: ' + error);\n throw 'Execution failed: ' + error + '.';\n}",
"scope": 1,
"type": 5,
"timeout": "40s",
"parameters": [
{
"name": "token",
"value": "{$WEBHOOK.TOKEN}"
},
{
"name": "host",
"value": "{HOST.HOST}"
},
{
"name": "v",
"value": "2.2"
}
]
},
"id": 1
}
Risposta:
{
"jsonrpc": "2.0",
"result": {
"scriptids": [
"3"
]
},
"id": 1
}
Creare uno script SSH
Creare uno script SSH con autenticazione a chiave pubblica che possa essere eseguito su un host e che abbia un menu contestuale.
{
"jsonrpc": "2.0",
"method": "script.create",
"params": {
"name": "SSH script",
"command": "my script command",
"type": 2,
"authtype": 1,
"username": "John",
"publickey": "pub.key",
"privatekey": "priv.key",
"password": "secret",
"port": "12345",
"scope": 2,
"menu_path": "All scripts/SSH",
"usrgrpid": "7",
"groupid": "4"
},
"id": 1
}
Risposta:
{
"jsonrpc": "2.0",
"result": {
"scriptids": [
"5"
]
},
"id": 1
}
Creare uno script personalizzato
Creare uno script personalizzato che riavvierà un server. Lo script richiederà l'accesso in scrittura al host e chiederà all'utente un input manuale. Dopo l'invio corretto dell'input, lo script mostrerà un messaggio di conferma nel frontend.
{
"jsonrpc": "2.0",
"method": "script.create",
"params": {
"name": "Reboot server",
"command": "reboot server {MANUALINPUT}",
"type": 0,
"scope": 2,
"confirmation": "Are you sure you would like to reboot the server {MANUALINPUT}?",
"manualinput": 1,
"manualinput_prompt": "Which server you want to reboot?",
"manualinput_validator": "[1-9]",
"manualinput_validator_type": 0,
"manualinput_default_value": "1"
},
"id": 1
}
Risposta:
{
"jsonrpc": "2.0",
"result": {
"scriptids": [
"4"
]
},
"id": 1
}
Creare uno script di tipo URL
Creare uno script di tipo URL per l'ambito host che rimanga nella stessa finestra e abbia un testo di conferma.
{
"jsonrpc": "2.0",
"method": "script.create",
"params": {
"name": "URL script",
"type": 6,
"scope": 2,
"url": "http://zabbix/ui/zabbix.php?action=host.edit&hostid={HOST.ID}",
"confirmation": "Edit host {HOST.NAME}?",
"new_window": 0
},
"id": 1
}
Risposta:
{
"jsonrpc": "2.0",
"result": {
"scriptids": [
"56"
]
},
"id": 1
}
Creare uno script di tipo URL con input manuale
Creare uno script di tipo URL per l'ambito evento che si apra in una nuova finestra e abbia input manuale.
{
"jsonrpc": "2.0",
"method": "script.create",
"params": {
"name": "URL script with manual input",
"type": 6,
"scope": 4,
"url": "http://zabbix/ui/zabbix.php?action={MANUALINPUT}",
"new_window": 1,
"manualinput": 1,
"manualinput_prompt": "Select a page to open:",
"manualinput_validator": "dashboard.view,script.list,actionlog.list",
"manualinput_validator_type": 1
},
"id": 1
}
Risposta:
{
"jsonrpc": "2.0",
"result": {
"scriptids": [
"57"
]
},
"id": 1
}
Fonte
CScript::create() in ui/include/classes/api/services/CScript.php.