2016-06-02 9 views
0

Ich habe ein Diktat ({'ip': '10 .198.0.12 '}, {' ip ': '10 .198.0.91'}) und so weiter.Ping ip's in einem dict

Ich muss die IPs in einem Diktat einzeln anpingen und sehen, ob es pingable ist. Ich bin mit dem pyping Python-Bibliothek, aber die ich erhalte eine Fehlermeldung, „dict Objekt hat kein Attribut geteilt“

ich die IP-Adressen aus der Datenbank holen Zeilen mit = cursor.fetchall() -Methode und wiederkehr variablen Reihen zu meiner Funktion ping_ip.

def ping_ip(values): 
    ip_used_list=[] 
    ip_free_list=[] 
    for ip in values: 
    response = pyping.ping(ip) 
    if response.ret_code == 0: 
    ip_used_list.append(ip) 
    print("reachable", ip) 
    else: 
    ip_free_list.append(ip) 
    print("unreachable", ip) 
    return ip_free_list 
+0

Okay .... Was ist Ihre Frage? – CoryKramer

+3

Sie haben kein Diktat; Sie haben ein Tupel von Diktaten. – Selcuk

Antwort

2

In Ihrer Frage haben Sie kein "dict of IPs". Was Sie haben, ist ein set von dict s, die eine Eigenschaft ip haben, die eine IP-Adresse enthält.

Zum Pingen benötigen Sie nur die ip Eigenschaft der dict s, die sich innerhalb der set befinden.

for ip_dict in values: 
    response = pyping.ping(ip_dict['ip']) 

Oder, wenn Sie nur die tatsächlichen IP-Nummern arbeiten wollen und vergessen Sie den {'ip': ''} Teil, könnte man sich in ein list ersten konvertieren.

def ping_ip(values): 
    values = [x['ip'] for x in values] 
    ... 

dass Sie eine Liste von IP-Adressen wie ['10.198.0.12', '10.198.0.91', ...] gibt iterieren.

+0

danke :). Ich bekomme jetzt o/p als ('unreachable', '10 .135.0.10 ') Ich möchte jetzt eine Liste aller unerreichbar und erreichbar IPs separat. Wie geht das ? –

+0

Das ist einfach, aber Sie müssen Ihre Frage klären. Was genau bedeutet das Tupel '('unerreichbar', '10 .135.0.10 ')? Ist die IP '10.135.0.10' nicht erreichbar? Oder wurde die unerreichbare IP-Zeichenkette durch das Wort "unerreichbar" ersetzt und sind alle intakten IP-Zeichenketten diejenigen, die * erreichbar sind? – C14L