您好我今天正在处理一个新的python脚本,但我遇到了这个错误。我有点困惑,加上脚本新手我不知道如何定义这段代码。任何帮助都会很精彩。谢谢
错误
File "newipemail.py", line 25, in <module>
text = 'The IP address is: %s' % inet_string
NameError: name 'inet_string' is not defined
脚本
#!/usr/bin/python
import subprocess
import smtplib
import string
import time
FIXED_IP = '10.10.2.10'
ipaddr_string = 'ip -4 addr > ~/current_ip.txt'
subprocess.call(ipaddr_string, shell=True)
ip_file = file('current_ip.txt', 'r')
for line in ip_file:
if 'eth0:' in line:
inet_line = ip_file.next()
_time = time.asctime()
inet_string = inet_line[9:(inet_line.index('/'))]
if inet_string != FIXED_IP:
print 'Found eth0: %s' % inet_string
SUBJECT = 'IP Address from Raspberry Pi at: %s' % time.asctime()
TO = 'user@emial.com'
FROM = 'pi@email.com'
text = 'The IP address is: %s' % inet_string
BODY = string.join((
'From: %s' % FROM,
'To: %s' % TO,
'Subject: %s' % SUBJECT,'',text), '\r\n')
server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.login('email.server.com', 'password')
server.sendmail(FROM, [TO], BODY)
server.quit()
ip_file.close()
答案 0 :(得分:2)
问题是,对于line
中的当前current_ip.txt
,找不到字符串eth0:
。因此,if语句返回False
。
if 'eth0:' in line:
inet_line = ip_file.next()
_time = time.asctime()
inet_string = inet_line[9:(inet_line.index('/'))]
如果在eth0:
中找到line
,则定义inet_line
,否则将不会定义它,并且Python会跳转到下一个代码块,这是引发异常的地方。
text = 'The IP address is: %s' % inet_string
答案 1 :(得分:0)
当我进入文件时,我意外地将eth0作为eth1放置,我将其更改回eth0并且效果很好。