2017-05-04 7 views
0

Ich habe ein grundlegendes Problem zu lösen, ich bin neu in Python und möchte Python3 verwenden, um einfach die Eingabe von einem Benutzer zu greifen und es an einer bestimmten Stelle innerhalb einer mehrzeiligen Zeichenfolge einzufügen. Ich bin mir nicht ganz sicher, um den spezifischen Ort zu erreichen, nach dem ich suche.python3 DNS Domänenblock Skript

Was ich bisher

new_domain = input("Ener domain you would like to block: ") 

zone = """zone {} IN {{ 
      type master; 
      file "zones/192.168.1.1.zone"; 
      allow-transfer { none; }; 
      allow-query { my-dmz; }; 
}; 
""".format(new_domain) 

Wenn ich führen Sie den Code

Error is "KeyError: ' none;' 

i aus dem Multi-Line-Zeichenfolge entkommen müssen Sie die {} gültigen Parameter, um die Benutzer zu platzieren Eingang?

Sobald ich die Ausgabeformatierung richtig habe, möchte ich in mehrere Domänen einfügen, damit diese spezifische Ausgabe pro Domäne ich eingeben. auf jede Hilfe

So würde gewünschte Ausgabe

Enter domain you would like to block? test123.com 

zone "test123.com" IN {{ 
      type master; 
      file "zones/192.168.1.1.zone"; 
      allow-transfer { none; }; 
      allow-query { my-dmz; }; 
}; 

Vielen Dank im Voraus sein.

Antwort

0

Ok so nach etwas Hilfe von an anderer Stelle ich den folgenden Code gefunden haben, funktioniert für alle anderen interessierten

new_domain = input("Ener domain you would like to block: ") 

print("""zone "%s" IN { 
       type master; 
       file "zones/192.168.1.1.zone"; 
       allow-transfer { none; }; 
       allow-query { my-dmz; }; 
};""" % new_domain) 

Ich brauchte mit Format Marker in das vermeiden {}, wie ich überall seltsame Escape-Zeichen haben müssten . Stattdessen wurde die traditionelle Formatierungsoption% verwendet. Scheint den Trick zu machen.

Jetzt wird es in eine while-Schleife platzieren und Einträge in eine Datei schreiben, wie ich Hunderte von Domänen hinzufügen muss :)