zoukankan      html  css  js  c++  java
  • 使用zabbix api批量修改trigger级别

    之前的模板没有考虑到不同设备的trigger级别的区分。现在模板太多了。所以写个批量脚本修改级别。

    zabbix的trigger组织形式确实复杂(详见下面的sql)。。。。。。。。。

    回到zabbix api。

    首先需要调用user.login方法获得一个session id(貌似session id获得之后是不会变的。反正我一个id用了好久)。

    cat zbxapi_login.pl

    use JSON::RPC::Client;

      my $client = new JSON::RPC::Client;

      my $uri    = 'http://6.86.3.14/zabbix/api_jsonrpc.php';

      my $callobj = {

         jsonrpc  => '2.0',

         method  => 'user.login',

         params => { user => 'admin', password => 'zabbix' } ,

         id  => '1',

      };

      my $res = $client->call($uri, $callobj);

      if($res) {

         if ($res->is_error) {

             print "Error : ", $res->error_message;

         }

         else {

             print $res->result;

         }

      }

      else {

         print $client->status_line;

      }

    使用trigger.update修改trigger属性。

    cat zbxapi_trigger_se.pl

    ##description:set triggers to warning. the triggers verify by hosts groups and items.

    ##use as : perl zbxapi_trigger_se.pl 0487d1827fd9a14be022491a59b1dcc8

    use Data::Dumper;

    use JSON::RPC::Client;

    use DBI;

    sub connect_db {

    my $dbh = DBI->connect('DBI:mysql:zabbix:6.86.3.14','zabbix','zabbix') or die  "cannot connect mysql:". DBI->errstr;

          return $dbh;

    }

    my $db = connect_db();

    my $sth = $db->prepare(q{select triggerid from functions where itemid in   (   select itemid from items where name in    ('Free swap space in %','Host uptime (in sec)','CPU $2 time ($3)','Host status','Number of running processes $1')    and hostid in    (    select hostid from hosts_groups where groupid in ('28','41','43','44','45','46','48','54','90','91')    )   )}) or die $db->errstr;

           $sth->execute() or die $sth->errstr;

    $ups = $sth->fetchall_arrayref();

    foreach my $triggerid (@$ups)

      {

      my $client = new JSON::RPC::Client;

      my $uri    = 'http://6.86.3.14/zabbix/api_jsonrpc.php';

      my $callobj = {

         jsonrpc  => '2.0',

         method  => 'trigger.update',

         params => { triggerid => @$triggerid[0], priority => '2' } ,

         auth => $ARGV[0],

         id  => '1',

         };

      my $res = $client->call($uri, $callobj);

      if($res) {

         if ($res->is_error) {

             print "Error : ", $res->error_message;

         }

         else {

             print Dumper( $res->result);

         }

      }

      else {

         print $client->status_line;

      }

    }

  • 相关阅读:
    SharePoint 2013 配置基于表单的身份认证
    SharePoint 2013 场解决方案包含第三方程序集
    SharePoint 2010 站点附加数据升级到SP2013
    SharePoint 2013 在母版页中插入WebPart
    SharePoint 2013 搭建负载均衡(NLB)
    SharePoint 部署解决方案Feature ID冲突
    SharePoint 2013 配置基于AD的Form认证
    SharePoint Server 2016 Update
    SharePoint 2013 为用户组自定义EventReceiver
    SharePoint 2013 JavaScript API 记录
  • 原文地址:https://www.cnblogs.com/xianguang/p/9845390.html
Copyright © 2011-2022 走看看