Bonjour,

Je tente de faire un petit script pour faire un inventaire à partir de 2 commande avec un retour en JSON. Puis envoyer le JSON dans splunk

Pour l'instant je n'ai pas encore regarder pour construire un JSON à partir de mes 2 retours commande. La partie envoie SPLUNK je l'ai déja fait, donc j'ai le bout de code qui va bien.

Par moment j'ai des interfaces n'ayant pas de description, aussi quand je tape ma commande, la clef "desc" n''est pas présente.

Et donc j'ai une erreur

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
connect : xxxxx
{"device": "switch_1", "interface": "Ethernet1/1", "description": "xxxxxx"}
{"device": "switch_1", "interface": "Ethernet1/2", "description": "xxxxxx"}
{"device": "switch_1", "interface": "Ethernet1/3", "description": "xxxxxx"}
Traceback (most recent call last):
  File "test_mac_inv.py", line 51, in <module>
    desc = items["desc"]
KeyError: 'desc
J'ai bien tenté d'utiliser items.get, mais toujours la même erreur

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
desc = items.get("desc")
desc = items.get("desc", '')

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
IP =  ["xxx.xxx.xxx.xxx"]
#SSH INIT
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 
username = "xxxxxx"
password = "xxxxxxx"
port = 22
 
for swi in IP:
        Connection = "connect : " + swi
        print Connection
#GET hostname
        ssh.connect(swi, port, username, password, look_for_keys=False)
        stdin,stdout,stderr = ssh.exec_command('show hostname ')
        host = str(stdout.readlines()[0].strip())
#GET desc
        ssh.connect(swi, port, username, password, look_for_keys=False)
        stdin,stdout,stderr = ssh.exec_command('show interface description | json ')
        output = stdout.readlines()
 
        #GET OUTPUT
        JSON_DATA = json.loads('\n'.join(output))
 
        for items in JSON_DATA["TABLE_interface"]["ROW_interface"]:
             interface = items["interface"]
             desc = items["desc"]
             Cisco_Inventory = { "device" : host, "interface" : str(items["interface"]), "description" : str(items["desc"])}
             print Cisco_Inventory

Merci par avance