2013-03-04 34 views
0

我有一堆设备,我必须做一个脚本来知道如果telnet启用或不。所以我做了以下脚本:Python套接字 - 测试设备与Telnet启用

import socket 

file = open('list', 'r') 
file = file.readlines() 
list = [] 
port = 23 


s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 


for i in file: 
    i=i.replace('\n','') 
    list.append(i) 
for i in host: 
    try: 
     s.connect((i, port)) 
     s.shutdown(2) 
     print (i+' Telnet is enable') 
    except: 
     print (i+' Telnet is disable') 

问题是,第一次测试显示telnet启用后,所有设备都显示为禁用。我检查我得到的错误,错误如下:

socket.error: (133, 'Transport endpoint is already connected') 

我知道这与关闭第一次会话有关,但我无法做到。在此先感谢

+1

http://stackoverflow.com/a/13110002/477878 – 2013-03-04 14:39:51

+0

为什么不只是['close(关闭)](http://docs.python.org/2/library/socket.html#socket.socket.close)连接? – 2013-03-04 14:41:16

+0

如果我做s.close ()然后我尝试打开一个新的,我得到这个错误'socket.error:(9,'Bad file descriptor')' – amb1s1 2013-03-04 14:45:15

回答

0

由于功能请求mark a comment as an answer仍然下降,我复制上述解决方案在这里。

你需要关闭旧插座,并创建一个新的,即把S = socket.socket(...内循环 - 约阿希姆·伊萨克森