2017-04-11 7 views
0

ich folgende Python-Code geschrieben haben:Python-Skript - die DNS-Auflösung

#!/usr/bin/python 

import subprocess 

inputfile = open('list2.txt' , 'r') 
outputfile = open('results.txt' ,'w') 
for lines in inputfile.readlines(): 
    runproc = subprocess.Popen(["dig", lines],stdout=outputfile,) 

inputfile.close() 
outputfile.close() 

führt einfach DNS-Abfragen in einer Liste auf Domänen und die Ausgabe in eine Datei schreibt. Die list2.txt hat folgendes Format:

www.domain1.com 
www.domain2.com 

Die Ausgabedatei (results.txt) schreibt den folgenden Export und nicht später:

; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.2 <<>> www.domain1.com 

;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 12561 
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 

;; OPT PSEUDOSECTION: 
; EDNS: version: 0, flags:; MBZ: 0005 , udp: 4096 
;; QUESTION SECTION: 
;www.domain1.com\010.  IN  A 

;; AUTHORITY SECTION: 
.      5  IN  SOA  a.root-servers.net. 

Wenn Sie sorgfältig die Ausgabe beobachten, der Code fügt eine komisch \ 010 neben Domain und natürlich schlägt die DNS-Auflösung fehl. Ich kann nicht herausfinden, was los ist. Irgendwelche Ideen?

Dank im Voraus

+1

Könnte es nur am Ende der Zeile das Zeilenende-Zeichen sein? Versucht 'subprocess.Popen ([" dig ", linien.strip()], ..'? – L3viathan

+0

Vielen Dank L3viathan für die Antwort. Das Skript gibt jetzt aus: dig: '' ist kein legaler Name (unerwartetes Ende der Eingabe) – VorX

+0

Haben Sie eine leere Zeile irgendwo in der 'list2.txt'? – L3viathan

Antwort

0

sieht aus wie ein ASCII-Zeichen (unter einem von ASCII- Tabellenzeilen)

\ 010 8 BS \ x08^H \ b (Backspace) ist (\ b entspricht im Inneren Backspace [] nur)

erhielt ich ähnliche Fehler, während die Datei über mehrere Texteditoren öffnen oder einfach Editieren der Datei viel sogar im selben Texteditor. Versuchen Sie eine neue Datei, Format es zu schaffen, und wenn es nicht hilft, erstellen Sie dann die Datei wie:

touch input_file.txt 
echo "www.domain1.com" >> input_file.txt 

sonst einfach eine Python-Datei wie input_file.py im selben Verzeichnis und Speicheradressen als statische Werte erstellen:

addres1 = "www.domain1.com" 

importieren sie dann die input_file.py in das Hauptprojekt und nutzen wie

input_file.address1 
Verwandte Themen