Community
    • Categories
    • Recent
    • Popular
    • Users
    • Search
    • Register
    • Login
    1. Home
    2. cgarling
    C
    Offline
    • Profile
    • Following 0
    • Followers 0
    • Topics 3
    • Posts 7
    • Groups 0

    cgarling

    @cgarling

    0
    Reputation
    62
    Profile views
    7
    Posts
    0
    Followers
    0
    Following
    Joined
    Last Online
    Age 24

    cgarling Unfollow Follow

    Latest posts made by cgarling

    • RE: Nächste freie IP Adresse per API abrufen?

      Ich habe mir inzwischen selbst eine Funktion in Python geschrieben. Hier der Code wer's gebrauchen kann:

      
      #!/usr/bin/python
      
      # import modules
      import httplib, json, urllib
      from netaddr import *
      
      # get next unused ip address
      def i_get_next_ip(i_net_id, i_net_title):
              # define parameters
              i_params = ('{"version":"2.0", "id":"1", "method":"cmdb.category.read", "params":{'
                          '"apikey":"' + i_api_key + '", "objID":' + i_net_id + ', "category":"C__CATS__NET_IP_ADDRESSES"}}')
      
              # connect to server
              i_http_conn.connect()
      
              # send POST request
              i_http_conn.request('POST', i_api_url, i_params, i_headers)
      
              # get response
              i_response = json.loads(i_http_conn.getresponse().read())
      
              # close connection
              i_http_conn.close()
      
              # get result list
              i_result_list = i_response['result']
      
              # list of used ip addresses
              i_used_ip_list = []
              if i_result_list:
                      for i in range(len(i_result_list)):
                              i_used_ip = i_result_list[i]['title']
                              if i_used_ip and not i_used_ip in i_used_ip_list:
                                      i_used_ip_list.append(i_used_ip)
      
              # list of unused ip addresses
              subnet_unused_ip_list = []
              for subnet_ip_obj in IPNetwork(i_net_title).iter_hosts():
                      subnet_ip_str = str(subnet_ip_obj)
                      if not subnet_ip_str in i_used_ip_list:
                              subnet_unused_ip_list.append(str(subnet_ip_str))
      
              # first unused ip address
              first_unused_ip = subnet_unused_ip_list[0]
      
              # return value
              return first_unused_ip
      
      # main function
      if __name__ == '__main__':
              # global variables
              i_host = 'idoit.example.com'
              i_headers = {'Content-Type': 'application/json'}
              i_api_url = '/src/jsonrpc.php'
              i_api_key = 'abc123def456'
      
              # instantiate new httplib connection
              i_http_conn = httplib.HTTPConnection(i_host)
      
      	# next unused ip address
      	next_ip = ('42', '192.168.1.0/24')
      
      Die Funktion erwartet die objID des Layer 3 Netzes sowie dessen Bezeichnung, welche den Namen des Netzes im CIDR Format widerspiegeln muss.
      
      Viele Grüße, Christian[/i]
      
      posted in Betrieb
      C
      cgarling
    • Nächste freie IP Adresse per API abrufen?

      Hallo zusammen,

      weiß jemand ob es möglich ist über die API ( i-doit Version 1.8 ) die nächste freie IP Adresse für ein bestimmtes Subnet abzurufen?

      Viele Grüße, Christian

      posted in Betrieb
      C
      cgarling
    • Verwendung der API mit i-doit API Client Library for PHP

      Hallo zusammen,

      ich habe wie hier (https://bitbucket.org/dstuecken/i-doit-api-clients/wiki/PHP) beschrieben den API Client eingerichtet. Ich bekomme sowohl bei der Benutzung der Examples wie auch bei eigenen Testskripten diesen Fehler:

      
      PHP Parse error:  syntax error, unexpected '$categoryType' (T_VARIABLE), expecting identifier (T_STRING) in /usr/local/share/i-doit-api-clients/php/idoit/Api/CMDB/Category/G/General.php on line 34
      
      

      Ich verwende i-doit 1.8 Revision 21800 unter Ubuntu Server 16.04 mit PHP5.6. Weitere Infos reiche ich bei Bedarf gerne nach.

      Gruß, Christian

      posted in Entwicklung
      C
      cgarling
    • RE: Events von Skript verarbeiten

      Ich probiere es z.B. so:

      
      curl -X POST http://192.168.178.130/src/jsonrpc.php -H "Content-Type: application/json" -H "Authorization: Basic YWRtaW46YWRtaW4=" -d '{"version":"2.0","method":"cmdb.object.read","params":{"apikey":"abcdefgh","id":62,"catgID":47},"id":1}'
      
      

      Ich bekomme aber kein Ergebnis (es sollte die IP-Adresse des Hosts angezeigt werden). Ist der Aufruf noch falsch?

      posted in Betrieb
      C
      cgarling
    • RE: Events von Skript verarbeiten

      Was mir gerade sehr helfen würde: Wie kann ich über die API die Details eine Objekts abfragen und bis zu welchem Detailgrad geht das?

      Viele Grüße, Christian

      posted in Betrieb
      C
      cgarling
    • RE: Events von Skript verarbeiten

      Guten Morgen Benjamin,

      ich habe ein Event des Typs "Objekt: (beliebige Quelle) Neuanlage" definiert, welches mein Python Skript anspricht. So wie ich das verstehe bekommt dieses Skript z.B. bei Anlage eines Servers mindestens einen ggf. aber mehrere JSON Requests geschickt. Je nachdem welche Abhängigkeiten i-doit sonst noch anlegen muss. Stimmt das soweit?

      Sind die auswählbaren Events in der GUI das Maximum oder lassen sich innerhalb von i-doit weitere definieren, ähnlich der benutzerdefinierten Kategorien beispielsweise?

      Viele Grüße, Christian

      posted in Betrieb
      C
      cgarling
    • Events von Skript verarbeiten

      Hallo zusammen,

      ich beschäftige mich gerade mit den Events von i-doit und der Verarbeitung der Daten durch ein Skript. Ich habe zum Test ein Python Skript erstellt, welches das Base64 kodierte JSON dekodiert und in eine Datei sachreibt:

      
      #!/usr/bin/python
      
      import base64, json, sys
      
      file = open('/usr/local/bin/events/logfile', 'w')
      data = json.loads(base64.b64decode(str(sys.argv[1])))
      print(data)
      json.dump(data, file)
      file.close()
      
      

      Ich erhalte zwar eine Ausgabe wenn ich bspw. einen Server anlege, allerdings entspricht erstens die darin enthaltene SYSID (sofern vorhanden) nicht der des Objekts und zweitens sind keine brauchbaren Details zu finden. Ich würde z.B. eine IP-Adresse, Hostname etc. erwarten:

      
      {"username": "admin", "title": "Global v4 liefert Netzwerk an ", "cmdbStatus": "In Betrieb", "sysID": "SYSID_1477060626", "id": "63", "objectTypeConst": "C__OBJTYPE__RELATION", "cmdbStatusID": 6, "objectTypeID": 60, "objectType": "Beziehungen"}
      
      

      Wir wollen damit letztendlich per Skript die API von Foreman ansprechen und bei Erstellung eines Servers diesen dort auch als Host anlegen.

      posted in Betrieb
      C
      cgarling