我有以下代码:
# IP of servers
a = '11.22.33.44'
b = '55.66.77.88'
# for loop on the servers
for i in (a, b):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connect = s.connect((i, 25))
banner = s.recv(1024)
print banner
users = ['root', 'user' ]
# for loop on users list
for user in users:
s.send('VRFY ', user, + '\r\n')
result=s.recv(1024)
print result
s.close
我似乎无法遍历'root,user'列表并将其打印在s.send()
内;我做错了什么?
答案 0 :(得分:1)
看起来你正在关闭for
循环内的套接字。因此,第二次遍历该循环时,套接字将被关闭。
答案 1 :(得分:1)
send
收到以下参数:socket.send(string[, flags])
(来自docs)。您将错误的参数传递给send
- 它的行为与print
不同,它假定第二个参数是标志。相反,请执行以下操作:
for i in (a, b):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connect = s.connect((i, 25))
banner = s.recv(1024)
print banner
users = ['root', 'user' ]
# for loop on users list
for user in users:
s.send('VRFY %s\r\n' % (user,))
result=s.recv(1024)
print result
s.close()
另请注意我已使用s.close
和缺少的()
修复了缩进问题。如果没有括号,close
函数将不会执行,但不会生成错误。