Python Socket - 测试启用Telnet的设备

0 投票
1 回答
847 浏览
提问于 2025-04-17 17:52

我有一堆设备需要写个脚本来检查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 个回答

0

由于关于将评论标记为答案的功能请求一直没有被接受,我把上面的解决方案复制到这里。

你需要关闭旧的连接,然后创建一个新的连接,也就是说,把 s = socket.socket(... 放在循环里面。– Joachim Isaksson

撰写回答