Bonjour,

Je tente de développer un script qui récupérè des infos sur des équipements.
J'arrive au bout de ce développement, mais étant très limité dans mes capacités de dev, je me heurte à certaines difficulté.
Aussi j'en appel à l'aide de la communauté python !

Les éléments ou je bute :

Je voudrais faire des traitements parallèle, actuellement cela fonction IP par IP, mais je souhaiterais que le traitement se fasse par vague de 5 ou 10 IP. Je tenté de me documenter pour le faire pas moi même (échec total, je ne comprend pas)
A termes, il faudra un mdp dans se script, car je le ferais tourner toutes les 24h. Aussi le mdp ne doit pas être clair dans script.

Aide bonus !
Je pense que mon code est loin d'être optimiser, si jamais vous avez des modifications pour qu'il soit "plus propre" je suis preneur.


Merci par avance

Mon Code :

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/usr/bin/env python
import paramiko
from getpass import getpass
import time
import json
import re
import socket
import sys
import threading
 
# On initialise les differentes variables
SYSLOG_SERVER="@ip"
SYSLOG_PORT=@port
 
# On definit l'inventaire
IP = ["@ip_1", "@ip_2", "@ip_x"]
 
# On initie le SSH
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 
username = raw_input("Enter SSH Username: ")
password = getpass()
port = 22
 
# On recupere le hostname et le status de interface en format JSON
for swi in IP:
 
        #Recuperation du hostname
        ssh.connect(swi, port, username, password, look_for_keys=False)
        stdin,stdout,stderr = ssh.exec_command('show hostname ')
        host = stdout.readlines()[0].strip()
 
		#Recuperation du status des interfaces
        ssh.connect(swi, port, username, password, look_for_keys=False)
        stdin,stdout,stderr = ssh.exec_command('show interface status | json ')
        output = stdout.readlines()
        #print '\n'.join(output)
 
        #Uilisation du retour de "show interfacs status|json"
        JSON_DATA = json.loads('\n'.join(output))
        #print(JSON_DATA)
 
		# On trie les elements et on renomme les retours
        for items in JSON_DATA["TABLE_interface"]["ROW_interface"]:
             interface = items["interface"]
             state = items["state"]
             type = items["type"]
             Cisco_Inventory = { "Device" : host, "Interface" : str(items["interface"]), "Status" : str(items["state"]), "Type" : str(items["type"])}
             Cisco_Inventory = str(Cisco_Inventory).replace("'",'"').replace("sfpAbsent","Empty").replace("connected","Used").replace("disabled","Unused").replace("--","")
             print Cisco_Inventory
             # on envoie le log
             s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
             s.connect((SYSLOG_SERVER, SYSLOG_PORT))
             s.send(Cisco_Inventory)
             s.close()