zabbix api 获取所有主机名、IP

主要添加了1条selectInterfaces记录,本质就是对于数据库就是join这张表。perl代码如下:

#!/usr/bin/perl
use strict;
use warnings;
use JSON::RPC::Client;
use Data::Dumper;
use JSON;
use utf8;
use Parallel::ForkManager;
my $pm = Parallel::ForkManager->new(20);
#定义开启进程数
$| = 1;
binmode( STDIN,  ‘:encoding(utf8)‘ );
binmode( STDOUT, ‘:encoding(utf8)‘ );
#三行
binmode( STDERR, ‘:encoding(utf8)‘ );
#用来正常输出中文

# Authenticate yourself
my $client = new JSON::RPC::Client;
my $url    = ‘http://zabbix.mcshell.org/api_jsonrpc.php‘;
my $authID;
my $response;

my $json = {

    jsonrpc => "2.0",
    method  => "user.login",
    params  => {
        user     => "user",
        password => "password"
    },
    id => 1
};

$response = $client->call( $url, $json );

# Check if response was successful
die "Authentication failed\n" unless $response->content->{‘result‘};

$authID = $response->content->{‘result‘};
print "Authentication successful. Auth ID: " . $authID . "\n";

print Dumper \get_all_host_and_ip();

sub get_all_host_and_ip {
    my $json = {
        jsonrpc => ‘2.0‘,
        method  => ‘host.get‘,
        params  => {
            "output" => [ ‘name‘, "host" ],
#可以进行模糊匹配
            "selectInterfaces" => [ "interfaces", "ip" ]
#过滤 ip
        },
        id   => 1,
        auth => "$authID",
    };
    my $response = $client->call( $url, $json );
    die "host.get failed\n" unless $response->content->{result};
    my $hostID;
    foreach my $host ( @{ $response->content->{result} } ) {
 for my $num ( @{$host->{interfaces}} ) {

 $hostID->{ $host->{host} }
 = $num->{ip};

 }

    }
    return $hostID;

}
时间: 2024-10-01 07:05:08

zabbix api 获取所有主机名、IP的相关文章

PHP通过ZABBIX API获取主机信息 VS 直接从数据库获取主机信息

最近项目需要获取linux主机的一些信息,如CPU使用率,内存使用情况等.由于我们本身就装了zabbix系统,所以我只用知道如何获取信息即可,总结有两种方法可以获取. 一.通过ZABBIX API获取主机信息 这种方式获取的主机信息相对是比较新的(每分钟更新一次).但因为每次都需要请求接口,所以相对比较慢,如果并发查询的主机数量比较多,就会非常慢. 开源监控系统ZABBIX的官方文档提供了丰富的API.我这里http请求是用的Guzzle 6.当然你也可以用php内置的curl函数自己写一个ht

C#获取本地计算机名,IP,MAC地址,硬盘ID

using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebPa

Oracle中tnsping 主机名/Ip 显示TNS-12541: TNS:no listener

今天是个阴天,老天想下不下的,昏昏沉沉的总想睡觉-- 额--废话不多说了. 今天中午想做一个catalog库,我就在虚拟机上装了Oracle11g,本想不同于target数据库, 所以当时配置监听时就没有用默认的端口号1521,和平常一样,我也懒得手工创建监听, netca创建监听,监听名默认名LISTENER,端口号改为1526: 接着就是启动数据库,注册 alter system register,启动监听,[[email protected] admin]$ lsnrctl start 查

python 调用zabbix api实现查询主机信息,输出所有主机ip

之前发现搜索出来的主机调用zabbix api信息都不是那么明确,后来通过zabbix官方文档,查到想要的api信息,随后写一篇自己这次项目中用到的api. #!/usr/bin/env python #coding:utf8 import requests import json headers = {'Content-Type': 'application/json-rpc'} server_ip = '10.37.149.109' url = 'http://%s/zabbix/api_j

PHP通过Zabbix API获取服务器监控信息

开源监控系统Zabbix提供了丰富的API,供第三方系统调用. 基本步骤如下: 1.获取合法认证:连接对应Zabbix URL,并提供用户名和密码,HTTP方法为"POST",HTTP头部类型为"application/json" 1 public function zabbixJsonRequest($uri, $data) { 2 try{$json_data = json_encode($data); 3 $c = curl_init(); 4 curl_se

利用Zabbix API 获取各个分组下的服务器列表以及详细信息

现在越来越多的公司选择使用开源软件Zabbix来做服务器业务监控,其高逼格的用户管理是个亮点,所以可以通过调用它的接口将权限管理应用到很多地方,比如说堡垒机权限.以下是用python简单写了个小脚本,通过定义分组名便可以得到分组下的服务器信息. #coding=utf-8 __author__ = 'Perling' from urllib import urlencode import urllib2 import json def post(post_data):     api_url =

zabbix API 获取CPU 信息

curl -i -X POST -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","method":"user.login","params":{"user":"william","password":"[email protected]#"},"auth

Zabbix无法获取Windows主机CPU利用率、负载等问题处理

今天随机查看服务器时,无意中发现某机器的CPU利用率和负载等信息出不来,远程测试也一直提示ZBX_NOTSUPPORTED. 通知SA调整Agent为Debug模式,终于发现问题所在: 3508:20150504:205003.406 check_counter_path(): cannot make counterpath '\2\674': [0xC0000BBD] A required argument is missing or incorrect. 参考此帖处理:ZBX-903 Thi

python获取linux主机名

1.第一种 #!/usr/bin/env python  #encoding=utf-8 import socket  import os  myname = socket.getfqdn(socket.gethostname()) myip = socket.gethostbyname(myname) print myname print myip 2.第二种 #!/usr/bin/env  python  #encoding:utf-8 import socket import fcntl