2017-12-20 7 views
1

Ich möchte etwa ein Dutzend oder so Python-Skripte erstellen, die mit Netzwerkgeräten sprechen werden, die meisten von ihnen tun eine Art von Telnet/ssh/snmp Aktion, entweder Informationen erhalten oder zu ändern es.Richtiger Ansatz für die Portierung von Perl-Code auf Python

In Perl würde ich normalerweise einen verschachtelten Hash verwenden, der funktioniert, versucht, dies in ein verschachteltes Wörterbuch in Python zu schreiben und das funktioniert .... aber ich bin mir nicht sicher, ob ich Klassen verwenden soll oder nicht. Grundsätzlich sind die wichtigsten Datenstrukturen, die ich brauche, sind Dinge:

  • „Arbeitseinheit“, im Grunde ein Gerät mit einer Reihe von Eigenschaften wie ipaddress, Host-Name, log_file_locations, Ergebnisse etc ..

  • „Einstellungen "und‚Transport‘Wörterbuch, die im Grunde sagt, sind wir tun ssh oder SNMP- und was sind die Einstellungen für die es (Benutzer-ID/Passwort, Community-String etc ..)

Wenn ich zum Beispiel ein Skript für 10 Geräte ausführe, dann habe ich normalerweise ein Lexikon von Wörterbüchern mit der IP-Adresse als Schlüssel zu diesem Diktat.

Ich könnte natürlich auch eine "Workunit" -Klasse erstellen und eine Grundliste von "Workunit" -Objekten erstellen, aber je mehr ich über Python lese, desto weniger "Python"? es fühlt sich ... Irgendwelche Erkenntnisse darüber, was der "richtige" Ansatz in diesem Fall ist? (Beide werden funktionieren, da bin ich mir sicher).

Antwort

1

Es liegt letztendlich an Ihnen. Wenn Sie Ihren Code wiederverwendbar machen möchten, nehmen Sie sich die Zeit, um die Funktionalität unter OOP zu implementieren. Da Sie planen, etwa 12 Skripte zu erstellen, kann es sich lohnen. Die Struktur, die Sie beschrieben haben, könnte in einer Bibliothek erstellt werden, auf die sich Ihre Skripte beziehen können.

In Bezug auf ein Wörterbuch mit einem benutzerdefinierten Datentyp in Python Implementierung, brauchen Sie nur ein paar methods

class MyThing: 
def __init__(self,name,location,length): 
    self.name = name 
    self.location = location 
    self.length = length 

def __hash__(self): 
    return hash((self.name, self.location)) 

def __eq__(self, other): 
    return (self.name, self.location) == (other.name, other.location) 

def __ne__(self, other): 
erforderlich implementieren