2017-09-05 247 views
1

好了,所以我有一個應該通過一個txt文件,如果ping等於0,它不會在其上的「Nslookup的」,然後它應該繼續,但運行和ping的IP代碼它的後第一個在終端上留下來,就像等待輸入一樣。在其他情況下,我的代碼通過txt文件運行良好,但是一旦我在'nslookup'中添加它就會在第一個之後停止並等待輸入。繼續循環

有沒有辦法讓它通過txt文件繼續循環,直到它到達終點?

繼承人我使用我知道還有其他方法可以做到一個查找表上的IP地址,但我想在這種情況下,除非它不可能使用「NSLOOKUP」的代碼。

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

回答

2

那只是因爲你忘了的參數傳遞給nslookup

當你不傳遞任何參數,程序開始在自己的殼交互模式。

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

> 

但使用os.system不會讓你能夠獲得命令的輸出。對於您需要

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

,而不是你os.system命令

+0

好了,所以當我把即時通訊使用os.system( 'NSLOOKUP {}'。格式(line.strip()))我得到的文件「 」,5號線,在 ValueError異常:零長度字段名稱格式 – Cry2Senpai

+0

滑稽足夠它工作在2.7你有它的原單的方式,但該系統即時通訊將使用它在運行2.6。儘管極其有幫助,但非常感謝。 – Cry2Senpai