[comment]: # ({d756b50a-d756b50a})
# 更新

[comment]: # ({/d756b50a-d756b50a})

[comment]: # ({5ceb4e4b-0d23e0d8})
### 描述

`object discoveryrule.update(object/array lldRules)`

此方法更新已存在的LLD规则。

::: noteclassic
此方法只有 *Admin(管理员)* 和 *Super admin(超级管理员)* 用户可用。可以在用户角色设置中撤销调用该方法的权限。更多信息请查看[用户角色](/manual/web_interface/frontend_sections/users/user_roles)。
:::

[comment]: # ({/5ceb4e4b-0d23e0d8})

[comment]: # ({c79f083e-cf98658c})
### 参数

`(object/array)` 要更新的 LLD 规则属性。

必须为每个 LLD 规则定义 `itemid` 属性，其他所有属性均为可选。
只有传入的属性会被更新，其他所有属性将保持不变。

除[标准 LLD 规则属性](object#lld-rule)外，该方法还接受以下参数。

|参数|[类型](/manual/api/reference_commentary#data-types)|描述|
|--|--|------|
|filter|object|用于替换现有过滤器的 [LLD 规则过滤器](/manual/api/reference/discoveryrule/object#lld-rule-filter)。|
|preprocessing|object/array|用于替换现有预处理选项的 [LLD 规则预处理](/manual/api/reference/discoveryrule/object#lld-rule-preprocessing) 选项。<br><br>[参数行为](/manual/api/reference_commentary#parameter-behavior):<br>- 继承对象为 *只读*|
|lld\_macro\_paths|object/array|用于替换现有 lld\_macro\_path 选项的 LLD 规则 [lld\_macro\_path](/manual/api/reference/discoveryrule/object#lld-macro-path) 选项。<br><br>[参数行为](/manual/api/reference_commentary#parameter-behavior):<br>- 继承对象为 *只读*|
|overrides|object/array|用于替换现有覆盖选项的 [LLD 规则覆盖](/manual/api/reference/discoveryrule/object#lld-rule-overrides) 选项。<br><br>[参数行为](/manual/api/reference_commentary#parameter-behavior):<br>- 继承对象为 *只读*|

[comment]: # ({/c79f083e-cf98658c})

[comment]: # ({6f962e26-6f962e26})
### 返回值

`(object)` 返回一个对象，其中包含 `itemids` 属性下更新的 LLD 规则的 ID。

[comment]: # ({/6f962e26-6f962e26})

[comment]: # ({b41637d2-b41637d2})
### 示例

[comment]: # ({/b41637d2-b41637d2})

[comment]: # ({e13e1807-67c9278f})
#### LLD 规则添加一个过滤器

添加一个过滤器，以便 *{\#FSTYPE}* 宏的内容与 *\@File systems for discovery* 正则表达式匹配。

[请求](/manual/api#performing-requests)：

```json
{
    "jsonrpc": "2.0",
    "method": "discoveryrule.update",
    "params": {
        "itemid": "22450",
        "filter": {
            "evaltype": 1,
            "conditions": [
                {
                    "macro": "{#FSTYPE}",
                    "value": "@File systems for discovery"
                }
            ]
        }
    },
    "id": 1
}
```

响应：

```json
{
    "jsonrpc": "2.0",
    "result": {
        "itemids": [
            "22450"
        ]
    },
    "id": 1
}
```

[comment]: # ({/e13e1807-67c9278f})

[comment]: # ({d95f4004-f3fd4d6c})
#### 添加LLD宏路径

[请求](/manual/api#performing-requests)：

```json
{
    "jsonrpc": "2.0",
    "method": "discoveryrule.update",
    "params": {
        "itemid": "22450",
        "lld_macro_paths": [
            {
                "lld_macro": "{#MACRO1}",
                "path": "$.json.path"
            }
        ]
    },
    "id": 1
}
```

响应：

```json
{
    "jsonrpc": "2.0",
    "result": {
        "itemids": [
            "22450"
        ]
    },
    "id": 1
}
```

[comment]: # ({/d95f4004-f3fd4d6c})

[comment]: # ({1e8f3244-8d8cc019})
#### 禁用 trapping

禁用发现规则的LLD trapping。

[请求](/manual/api#performing-requests):

```json
{
    "jsonrpc": "2.0",
    "method": "discoveryrule.update",
    "params": {
        "itemid": "28336",
        "allow_traps": 0
    },
    "id": 1
}
```

响应：

```json
{
    "jsonrpc": "2.0",
    "result": {
        "itemids": [
            "28336"
        ]
    },
    "id": 1
}
```

[comment]: # ({/1e8f3244-8d8cc019})

[comment]: # ({f24aa3ff-bef0a5f5})
#### 更新 LLD 规则预处理选项

使用预处理规则“JSONPath”更新一个 LLD 规则。

[请求](/manual/api#performing-requests)：

```json
{
    "jsonrpc": "2.0",
    "method": "discoveryrule.update",
    "params": {
        "itemid": "44211",
        "preprocessing": [
            {
                "type": 12,
                "params": "$.path.to.json",
                "error_handler": 2,
                "error_handler_params": "5"
            }
        ]
    },
    "id": 1
}
```

响应：

```json
{
    "jsonrpc": "2.0",
    "result": {
        "itemids": [
            "44211"
        ]
    },
    "id": 1
}
```

[comment]: # ({/f24aa3ff-bef0a5f5})

[comment]: # ({5e692d62-3f18a1c3})
#### 更新LLD规则脚本

使用不同的脚本更新一个 LLD 规则脚本，并删除之前脚本使用的不必要参数。

[请求](/manual/api#performing-requests)：

```json
{
    "jsonrpc": "2.0",
    "method": "discoveryrule.update",
    "params": {
        "itemid": "23865",
        "parameters": [],
        "script": "Zabbix.log(3, 'Log test');\nreturn 1;"
    },
    "id": 1
}
```

响应：

```json
{
    "jsonrpc": "2.0",
    "result": {
        "itemids": [
            "23865"
        ]
    },
    "id": 1
}
```

[comment]: # ({/5e692d62-3f18a1c3})

[comment]: # ({99c7f9d7-11121314})
#### 更新LLD规则的生命周期。

更新LLD规则，以在实体不再被发现后12小时禁用它，并在7天后删除它。

[请求](/manual/api#performing-requests)：

```json
{
    "jsonrpc": "2.0",
    "method": "discoveryrule.update",
    "params": {
        "itemid": "46864",
        "lifetime_type": 0, 
        "lifetime": "7d",
        "enabled_lifetime_type": 0,
        "enabled_lifetime": "12h"
    },
    "id": 1
}
```

响应：

```json
{
    "jsonrpc": "2.0",
    "result": {
        "itemids": [
            "46864"
        ]
    },
    "id": 1
}
```

[comment]: # ({/99c7f9d7-11121314})

[comment]: # ({6a73b645-6a73b645})
### 来源
CDiscoveryRule::update() in
*ui/include/classes/api/services/CDiscoveryRule.php*.

[comment]: # ({/6a73b645-6a73b645})
