2017-09-05 4 views
1

Ok, donc j'ai du code qui est supposé passer par un fichier txt et envoyer un ping aux Ip si le ping est égal à 0, il fait un 'nslookup' dessus, puis il est supposé continuer mais après il fait le le premier dans le terminal il est laissé sur un> comme s'il attendait l'entrée. Dans d'autres cas, mon code parcourt bien le fichier txt mais une fois ajouté dans le 'nslookup' il s'arrête après le premier et attend l'entrée.Poursuivre la boucle

Y a-t-il un moyen de faire en sorte qu'il continue à parcourir le fichier txt jusqu'à la fin?

Utilise le code que j'utilise Je sais qu'il y a d'autres façons de faire une recherche sur une adresse Ip mais j'essaie d'utiliser 'nslookup' dans ce cas sauf si c'est impossible.

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!") 

Répondre

2

qui est tout simplement parce que vous avez oublié de passer l'argument à nslookup

Lorsque vous ne passez aucun argument, le programme démarre en mode interactif avec sa propre coquille.

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

> 

Mais en utilisant os.system ne vous fera pas en mesure d'obtenir la sortie de la commande. Pour cela, vous devez

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

au lieu de votre commande os.system

+0

Ok, donc quand j'im mis os.system ('nslookup {}'. Format (line.strip())) Je reçois le fichier " ", ligne 5, dans ValueError: nom de champ de longueur zéro dans le format – Cry2Senpai

+0

Assez drôle cela fonctionne dans 2.7 la façon originale que vous l'aviez mais les systèmes vont l'utiliser sur l'exécution 2.6. Merci beaucoup mais extrêmement utile. – Cry2Senpai