[PYTHON] Informationen erhalten Sie mit zabbix api

Herausforderung, zabbix api in Python zu steuern Dieses Mal werde ich versuchen, Informationen zu bekommen

Es gibt Pyzabbix usw., die für Python praktisch sind, aber Angenommen, es besteht Widerstand gegen die Installation in der Unternehmensserverumgebung Ich habe versucht, json und urllib2 zu verwenden Wenn Sie können, denke ich auch, dass Sie es verwenden werden, nachdem Sie es in ein Modul gelegt haben. Ich werde diesmal nicht so viel tun

Da ich ein Anfänger von Python bin, habe ich mich beim Erstellen auf den Inhalt des Vorgängers bezogen. [Ich durfte mich beziehen] http://www.zumwalt.info/blog/2012/11/pyhtonでzabbix-apiを触ってみる/

Vorausgesetzt, diesmal zu versuchen

Python-Skript

Die Operation wurde mit den Serien zabbix 2.0 und zabbix 2.4 bestätigt.

Über Einstellungen

Bitte schreiben Sie den URL-Teil des Clients an die Abhöradresse Vergessen Sie auch nicht, http oder https festzulegen

Inhalt dieser Zeit

python


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

import os
import sys
import getpass
import json
import urllib2

if len(sys.argv) != 2 :
  print ' ERROR : Please check Search hostname.'
  print '  Usage: ' + os.path.basename(__file__) + ' [search hostname]'
  sys.exit()

client = 'https://127.0.0.1/zabbix/api_jsonrpc.php'
postheader = {'Content-Type': 'application/json-rpc'}

userid = raw_input('Please Enter Zabbix Web Account : ')
passwd = getpass.getpass('PASSWORD :')
while userid == '':
  print 'type the account.'
  userid = raw_input('Please Enter Zabbix Web Account : ')
while passwd == '':
  print 'type the password'
  passwd = getpass.getpass('PASSWORD :')

# auth
authquery = json.dumps({'jsonrpc':'2.0', 'method':'user.login', 'params':{'user':userid, 'password':passwd}, 'auth':None, 'id': 1})
authreq = urllib2.Request(client, authquery, postheader)

try :
  getauthresult = urllib2.urlopen(authreq).read()
  authresult = json.loads(getauthresult)

except Exception as e :
  print ' %s %s' % ('ERROR :',e)
  print '         Please check zabbix URL Setting or Others.'
  sys.exit()

if 'error' in authresult :
  print ' %s %s' % ('API Error :',authresult['error']['data'])
  sys.exit()

# query
##Methoden und Parameter
# host.get :Methode zur Erfassung von Hostinformationen
# output : Object properties to be returned.Wenn Sie sich das Dokument jetzt ansehen, ist die Standardeinstellung "Erweitern"
# filter : 'status:0' =Monitor-fähiger Host, 'host:[hogehoge]'Filtern Sie nach dem angegebenen Hostnamen
# inventory :Ausgabespezifikation des Inventarinformationselements erweitern=Zeige alles
#Wenn Sie nur das Inventar eines bestimmten Hosts abrufen möchten, den Host des Filters,Nur ausgewähltes Inventar sieht gut aus
postquery = json.dumps({'jsonrpc':'2.0', 'method':'host.get', 'params':{'output':'extend', 'filter':{'status':'0', 'host':sys.argv[1]}, 'selectInventory':'extend'}, 'auth':authresult['result'], 'id':1})
postreq = urllib2.Request(client, postquery, postheader)
getpostresult = urllib2.urlopen(postreq).read()
postresult = json.loads(getpostresult)

# result is empty
if not postresult['result'] :
  print 'no such host.'
  sys.exit()

# result data export
info=[]
for data in postresult['result'] :
  if not data['inventory'] :
    print 'no such inventory .'
    sys.exit()
  info = data['inventory']['notes']

print '--------------------------------------------------'
print '%s%s%s%s%s' % ('# INFO ->  ', sys.argv[1], ' : ', '\n', info)

Ausführungstest

python

$ ./get.py test
Please Enter Zabbix Web Account : test
PASSWORD :
--------------------------------------------------
# INFO ->  test :
test test test
Sogar ein Test
aaaaaaaaaaa

Die Ausgabe ist nicht gut, aber Sie können sie so extrahieren Ich dachte, es wäre praktisch, es sich zur Gewohnheit zu machen, jedes Mal zu überprüfen, bevor Sie sich beim Server anmelden, aber es ist schwierig, Regeln zu erstellen

Fehler beim Ausführen dieses Skripts

:Wenn die URL falsch angegeben ist:


$ ./get.py test
Please Enter Zabbix Web Account : test
PASSWORD :
 ERROR : <urlopen error [Errno 111] Connection refused>
         Please check zabbix URL Setting or Others.


$ ./get.py test
Please Enter Zabbix Web Account : test
PASSWORD :
 ERROR : HTTP Error 404: Not Found
         Please check zabbix URL Setting or Others.

:Konto- oder Passwortfehler:


$ ./get.py test
Please Enter Zabbix Web Account :a
PASSWORD :
 API Error : Login name or password is incorrect.

:Inventar ist deaktiviert, Host existiert nicht (nicht autorisiert und kann nicht referenziert werden):


$ ./get.py test1
Please Enter Zabbix Web Account : test
PASSWORD :
no such host.

$ ./get.py test2
Please Enter Zabbix Web Account : test
PASSWORD :
no such inventory.

Natürlich können Sie verschiedene Dinge erhalten, indem Sie die Methode und die Parameter ändern. Außerdem habe ich das Gefühl, dass ich die mit selectInventory zu erwerbenden Artikel für diese Inventarinformationen angeben konnte. Aus irgendeinem Grund erinnere ich mich, dass ich versagt habe, also lasse ich die Daten erweitern und verarbeiten

Recommended Posts

Informationen erhalten Sie mit zabbix api
[Python] Python-Paketinformationen mit der PyPI-API abrufen
Erhalten Sie Informationen zur virtuellen Währung mit der API coin
Holen Sie sich Alembic-Informationen mit Python
Holen Sie sich ein Ranking mit Rakuten API
[Python] Mit der API von Qiita erhalten Sie Benutzer- und Artikelinformationen
Holen Sie sich Informationen zu Videodateien mit ffmpeg-python
Holen Sie sich Wetterinformationen mit Python & Scraping
YOLP Holen Sie sich eine XML-Datei mit Karteninformationen mit der Yahoo! Static Map API
Sammeln von Informationen von Twitter mit Python (Twitter API)
Abrufen von Eigenschaftsinformationen durch Scraping mit Python
Golang api bekommen
Drücken Sie die Zabbix-API (1.8, 2.0)
Holen Sie sich Urlaub mit der Google Kalender-API
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Holen Sie sich die neuesten AMI-Informationen mit der AWS CLI
Lassen Sie uns Wiki-Informationen mithilfe der MediaWiki-API abrufen
Holen Sie sich Aktienkursdaten mit Quandl API [Python]
Holen Sie sich CPU-Informationen von Raspberry Pi mit Python
Holen Sie sich den Betreff und den Text von Google Mail mit der Python- und Google Mail-API
Python-Skript zum Abrufen von Notizinformationen mit REAPER
[Linux] Informationen zu Linux-Ressourcen abrufen
[google-oauth] Benutzerinformationen abrufen
Extrudieren Sie mit der Fusion360-API
Beginnen Sie mit MicroPython
Holen Sie sich Tweets mit Tweepy
Holen Sie sich ein Date mit Python
Beginnen Sie mit Mezzanine
[Rails] So erhalten Sie Standortinformationen mithilfe der Geolocation-API
Holen Sie sich mit Python + Zeep einen Zeitplan von der Garoon SOAP API
Erhalten Sie Kommentare und Abonnenten mit der YouTube-Daten-API
Erhalten Sie Tweets mit beliebigen Schlüsselwörtern mithilfe der Streaming-API von Twitter
Holen Sie sich den Ländercode mit Python
Bild herunterladen mit Flickr API
Holen Sie sich die Tabelle dynamisch mit sqlalchemy
Verwenden Sie die Trello-API mit Python
Fangen Sie mit Django an! ~ Tutorial ⑤ ~
Erstellen Sie eine API mit Django
Holen Sie sich Twitter-Timeline mit Python
Beginnen Sie mit influxDB + Grafana
Verwenden Sie die Twitter-API mit Python
API mit Flask + uWSGI + Nginx
Fangen Sie mit Django an! ~ Tutorial ④ ~
Visualisieren Sie Standortinformationen mit Basemap
Optimieren Sie das Sammeln von Informationen mit Twitter API und Slack Bots
Fangen Sie mit Django an! ~ Tutorial ⑥ ~
Web-API mit Python + Falcon
Holen Sie sich die Thread-ID mit Python
Holen Sie sich GitHub-Informationen mit PyGithub
Holen Sie sich YouTube Live-Chat-Felder in Echtzeit mit API
Abrufen von Daten aus der Analyse-API mit Google API Client für Python
Unterstützen Sie sich mit der Twitter API
Zabbix API dies und das
Beginnen Sie mit Python! ~ ② Grammatik ~
Holen Sie sich Bildfunktionen mit OpenCV
Rufen Sie die API mit python3 auf.