2013-03-04 4 views
0

텔넷을 사용할 수 있는지 여부를 알기 위해 스크립트를 사용해야하는 장치가 있습니다.Python 소켓 - 텔넷이있는 장치를 사용할 수 있는지 확인합니다.

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') 

문제는 텔넷을 보여 첫 번째 테스트가 가능하게 된 후에 비활성화 된 바와 같이, 모든 장치가 보여주고 있다는 것입니다 : 그래서 다음 스크립트를했다. 오류가 다음과 같음을 확인합니다.

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

첫 번째 세션을 닫는 것과 관련이 있지만 그럴 수는 없습니다. 미리 감사드립니다.

+1

http://stackoverflow.com/a/13110002/477878 –

+0

[close] (http://docs.python.org/2/library/socket.html#socket.socket.close) 연결을 사용하지 않으려면 –

+0

내가 s.close를 수행하면 어떨까요?(), 그리고 새로운 하나를 열려고하면,이 오류가 발생합니다. 'socket.error : (9,'잘못된 파일 설명자 ')' – amb1s1

답변

0

mark a comment as an answer의 기능 요청이 거부 된 상태이므로 여기에서 위의 해결책을 복사합니다.

당신은 루프 내 ... socket.socket (= 기존의 소켓을 닫고 새로 만들, 즉의를 넣어해야합니다 -. 요아킴 이삭손을

관련 문제