15.从zabbix数据库中获取ip列表

我把监控作为中心节点,所以所有IP地址都从zabbix中提取。

从zabbix数据库中提取IP,有两种方法:

(1)直接模糊查询hosts表:

比如查询运维部门的ip:select host from hosts where name like "op%" order by host;

完整代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import MySQLdb
reload(sys)
sys.setdefaultencoding(‘utf-8‘)

def get_ip():
    file = open(‘op_hosts‘, ‘w‘)
    file.truncate()

    con = MySQLdb.connect(host=‘localhost‘,user=‘zabbix‘,passwd=‘zabbix‘,db=‘zabbix‘,charset=‘utf8‘)
    cur = con.cursor()

    cur.execute(‘select host from hosts where name like "op%" order by host;‘)
    file = open(‘op_hosts‘, ‘a‘)
    for data in cur.fetchall():
        file.write(data[0] + ‘\n‘)

if __name__=="__main__":
    get_ip()

(2)根据不同组进行查询:

先从groups表中获取groupid

在从hosts_groups表中获取属于该组的hostid

最后从hosts表中获取host和name

完整代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import sys
import MySQLdb
reload(sys)
sys.setdefaultencoding(‘utf-8‘)

def get_ip():
    ipdir = ‘/root/ip‘
    for i in os.listdir(ipdir):
        file = open(os.path.join(ipdir, i), ‘w‘)
        file.truncate()

    con = MySQLdb.connect(host=‘localhost‘,user=‘zabbix‘,passwd=‘zabbix‘,db=‘zabbix‘,charset=‘utf8‘)
    cur = con.cursor()

    cur.execute(‘select host, name from hosts where hostid in (select hostid from hosts_groups where groupid in (select groupid from groups where groupid="8")) order by name;‘)
    file = open(‘/root/ip/linux‘, ‘a‘)
    for data in cur.fetchall():
        file.write(data[0] + ‘ ‘ + data[1] + ‘\n‘)

if __name__=="__main__":
    get_ip()
时间: 2024-10-14 19:43:53

15.从zabbix数据库中获取ip列表的相关文章

如何从Zabbix数据库中获取监控数据

做过Zabbix的同学都知道,Zabbix通过专用的Agent或者SNMP收集相关的监控数据,然后存储到数据库里面实时在前台展示.Zabbix监控数据主要分为以下两类: 历史数据:history相关表,从history_uint表里面可以查询到设备监控项目的最大,最小和平均值,即存储监控数据的原始数据. 趋势数据:trends相关表,趋势数据是经过Zabbix计算的数据,数据是从history_uint里面汇总的,从trends_uint可以查看到监控数据每小时最大,最小和平均值流量. Zabb

如何从zabbix数据库中获取每日流量最大值

如果要获取每日流量最大值,可以查看zabbix中的graphs,拉取最大值,但是我们还可以从zabbix_api或者数据库中直接取值,这要靠脚本实现. 有一个需求,收集一部分主机每日进出口流量的最大值,写了个脚本实现这个功能. 版本一: 根据查找到的主机名,输入日期后,输出一日内最大进出口流量 #!/bin/bash # ###获取每日流量最大值的脚本,脚本从zabbix数据库的history_uint表中取 ###数据,根据hostname.txt文件中的主机名. ###wuhf### z_u

从Zabbix数据库中提取内存采集的数据,做内存使用率计算

背景需求很简单,分析所有的设备的内存使用率,看那些设备的内存不够用是否需要加内存... 下面的脚本逻辑,就是通过提取zabbix数据库中的hostid,在提取itemid.. 然后通过item name过滤提取趋势数据,获取一天中最大的内存总数和最小可用内存 然后在计算在一天中最小内存可用率的设备, 下面的是通过free来计算的,当然也可以通过used来计算了... #!/usr/bin/ruby $KCODE = 'utf8' require 'mysql' db = Mysql.real_c

从数据库中随机ip代理,并验证

import pymysqlimport requests class GetRandomIP(): def getip(self): conn = pymysql.connect(host="localhost", port=3306, user="root", password="liuzhiyu", db="python77", charset="utf8") cursor = conn.cursor

是用JDBC从数据库中获取数据并以java对象返回

/** * * @param c * for example Person.class * @param primaryKeys * primaryKeys为主键,参数顺序和表中保持一致 如果id, name 为主键 类名为Person 则 getEntity(Person.class,1,"name") * @return */ public static Object getEntity(Class c, Object... primaryKeys) { PreparedState

python从数据库中获取utf8格式的中文数据输出时变成问号或乱码

我用python操作mysql数据库,数据库中数据格式为utf8,我使用python调用select语句后获取到数据库的信息,然后使用print打印出来的时候,原本中文数据却无法显示,显示出来的是一串?,为了解决这个问题,我也是绞尽脑汁啊. 我在网上搜集了很多资料,大家都说是windows默认的格式是'GBK',输出从mysql数据库中获取到的中文数据时,需要这样写: 假设info是从数据库中获取的中文值 print info.decode('UTF-8').encode('GBK') 结果:

数据库中获取汉字的首字母(网上某大神的)

create function fun_getPY(@str nvarchar(4000))returns nvarchar(4000)asbegindeclare @word nchar(1),@PY nvarchar(4000)set @PY=''while len(@str)>0beginset @word=left(@str,1)--如果非汉字字符,返回原字符set @[email protected]+(case when unicode(@word) between 19968 an

在cmd中获取ip地址和主机名

将下面的文件放到一个bat文件当中,以管理员身份运行. @echo off &setlocal enabledelayedexpansion Rem '/*========获取本机的IP地址(局域网)=========*/ echo "please wait" for /f "tokens=2 delims=:" %%b in ('ipconfig^|find /i "ip"') do set fsip=%%b echo %fsip% s

PostgreSQL数据库中获取表主键名称

PostgreSQL数据库中获取表主键名称 一.如下表示,要获取teacher表的主键信息: select pg_constraint.conname as pk_name,pg_attribute.attname as colname,pg_type.typname as typename from pg_constraint inner join pg_class on pg_constraint.conrelid = pg_class.oid inner join pg_attribute