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
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
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
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
Partager