2017-09-05 2 views
1

Ok, also habe ich Code, der durch eine TXT-Datei laufen soll und ping die IPs, wenn der Ping gleich 0 ist, tut es ein 'nslookup' darauf und dann soll es fortgesetzt werden, aber nachdem es tut der erste im Terminal ist es auf einem> als ob auf Eingabe warten. In anderen Fällen läuft mein Code durch die txt-Datei, aber sobald ich 'nslookup' hinzugefügt habe, stoppt er nach dem ersten und wartet auf die Eingabe.Fortsetzung der Schleife

Gibt es eine Möglichkeit, die txt-Datei weiter zu durchlaufen, bis sie zu Ende geht?

Heres der Code, den ich benutze Ich weiß, es gibt andere Möglichkeiten, einen Blick auf eine IP-Adresse zu tun, aber ich versuche 'nslookup' in diesem Fall zu verwenden, es sei denn es ist unmöglich.

import os 
with open('test.txt','r') as f: 
    for line in f: 
     response = os.system("ping -c 1 " + line) 
     if response == 0: 
       print os.system('nslookup') 
     else: 
       print(line, "is down!") 

Antwort

2

, die einfach ist, weil Sie das Argument zu nslookup

passieren vergessen Wenn Sie kein Argument übergeben, startet das Programm im interaktiven Modus mit einer eigenen Shell.

L:\so>nslookup 
Default server : mydomain.server.com 
Address: 128.1.34.82 

> 

Aber os.system verwendet, wird nicht machen Sie in der Lage, die Ausgabe des Befehls zu erhalten. Dafür würden Sie

output = subprocess.check_output(['nslookup',line.strip()]) 
print(output) # or do something else with it 

brauchen statt Ihrer os.system Befehl

+0

Ok so, wenn ich im, os.system put ('nslookup {}'. Format (line.strip())) Ich Datei erhalten " ", Zeile 5, in ValueError: Null Länge Feldname im Format – Cry2Senpai

+0

Lustig genug, es funktioniert in 2.7 die ursprüngliche Weise, die Sie es hatten, aber die Systeme werden es auf Lauf 2.6 verwenden. Vielen Dank, obwohl sehr hilfreich. – Cry2Senpai

Verwandte Themen