2017-09-25 14 views
2

此代碼是用來尋找使用ping每個host.But我面臨的一些problem.My代碼活活主機:這個用於掃描子網的python代碼有什麼問題?

#!/usr/bin/python 
import os 
global lis 
lis = [] 
global cnt 
cnt = 0 
print("Scanning the Subnet : ") 
subnet_input = input("->> ") 
subnet_input = subnet_input.split(".") 
for x in range(98,105): 
    subnet_input[3] = x 
    str(subnet_input) 
    new_sub = str(subnet_input[0])+'.'+str(subnet_input[1])+'.'+str(subnet_input[2])+'.'+str(subnet_input[3]) 
    res = os.system("ping -c 4 {}".format(new_sub)) 
    if res==0: 
     cnt = cnt+1 
     print("[*] {} is Alive".format(new_sub)) 
     str(new_sub) 
     lis.append(new_sub) 
print('--------------------------------------') 
print("[*] ALL ALIVE HOSTS ARE {}".format(cnt)) 
print('--------------------------------------') 

print(lis) 

我收到以下錯誤:

Traceback (most recent call last): 
File "Ping.py", line 8, in <module> 
subnet_input = input("->> ") 
File "<string>", line 1 
192.168.1.0 
     ^
+2

你完全確定你在使用Python 3.X嗎?因爲我希望這個錯誤只發生在版本2.7和更低版本中。如果使用文本「import sys」創建一個新程序,會得到什麼輸出結果?打印(內容sys.version)'? – Kevin

+0

是的,我只是檢查了我的linux機器中的python版本,它是2.7 我需要更新到python 3。感謝您的幫助 –

+0

注意,我不認爲您需要在此代碼中聲明全局變量。 – mauve

回答

2

使用python 2,用戶發送到input()的內容通過eval(),因此發生錯誤。

您可以改爲使用raw_input()或切換到python 3

+1

是的,我剛剛在我的linux機器上檢查了python版本,它是2.7 我需要更新到python 3.感謝您的幫助 –

+0

如果你沒有安裝python3,你可以使用'raw_input()' –

+0

@Mar_Null_Byte如果這個答案對你有好處,你可以接受它,點擊'v'鏈接。 TY –