2022 Zabbix中国峰会
2022 Zabbix中国峰会

创建

Description

描述

object script.create(object/array scripts)

This method allows to create new scripts. 此方法允许创建新脚本。 ::: noteclassic This method is only available to Super admin user type. Permissions to call the method can be revoked in user role settings. See User roles for more information. ::: ::: 请注意 此方法只有_超级管理员_ 用户可以使用。可以在用户角色设置中撤销调用此方法的权限。更多信息见User roles。 :::

参数

(对象/数组) 要创建的脚本。

此方法接受具有标准脚本属性的脚本。

返回值

(对象) 返回一个scriptids属性包含被创建脚本ID的对象。返回的ID顺序与传入脚本的顺序一致。

示例

Create a webhook script

创建webhook脚本

Create a webhook script that sends HTTP request to external service. 创建一个webhook脚本向外部服务发送HTTP请求。 Request: 请求

{
           "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}",
               "type": 5,
               "timeout": "40s",
               "parameters": [
                   {
                       "name": "token",
                       "value": "{$WEBHOOK.TOKEN}"
                   },
                   {
                       "name": "host",
                       "value": "{HOST.HOST}"
                   },
                   {
                       "name": "v",
                       "value": "2.2"
                   }
               ]
           },
           "id": 1
       }

Response: 响应

{
           "jsonrpc": "2.0",
           "result": {
               "scriptids": [
                   "3"
               ]
           },
           "id": 1
       }

Create an SSH script

创建SSH脚本

Create an SSH script with public key authentication that can be executed on a host and has a context menu. 创建一个SSH脚本,通过公钥完成身份验证从而可以在主机运行,并且带有上下文菜单。 Request: 请求

{
           "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
       }

Response: 响应

{
           "jsonrpc": "2.0",
           "result": {
               "scriptids": [
                   "5"
               ]
           },
           "id": 1
       }

Create a custom script

创建定制脚本

Create a custom script that will reboot a server. The script will require write access to the host and will prompt the user for manual input. Upon successful input submission, script will display confirmation message in the frontend. 创建一个重启服务器的定制脚本。该脚本会要求主机的写权限,并且在前端运行之前会显示配置信息。 Request: 请求

{
           "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
       }

Response: 响应

{
           "jsonrpc": "2.0",
           "result": {
               "scriptids": [
                   "4"
               ]
           },
           "id": 1
       }

Create a URL type script

创建一个URL类型的脚本

Create a URL type script for host scope that remains in the same window and has confirmation text. 为主为作用域创建一个URL类型的脚本,该脚本会要求主机的写权限,并且在前端运行之前会显示配置信息。 Request: 请求

{
           "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
       }

Response: 响应

{
           "jsonrpc": "2.0",
           "result": {
               "scriptids": [
                   "56"
               ]
           },
           "id": 1
       }

Create a URL type script with manual input

创建一个手动输入的URL类型脚本

Create a URL type script for event scope that opens in a new window and has manual input. 为在新窗口中打开并具有手动输入的事件作用域创建URL类型脚本。 Request: 请求

{
           "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
       }

Response: 响应

{
           "jsonrpc": "2.0",
           "result": {
               "scriptids": [
                   "57"
               ]
           },
           "id": 1
       }

源代码

CScript::create() 在 ui/include/classes/api/services/CScript.php