0

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

それが最初のセッションを閉じることに関係していることは知っていますが、できません。前もって感謝します

4

1 に答える 1

0

コメントを回答としてマークする機能のリクエストは引き続き拒否されるため、上記のソリューションをここにコピーします。

古いソケットを閉じて、新しいソケットを作成する必要があります。つまり、ループ内に s = socket.socket(... を配置します。 – Joachim Isaksson

于 2014-06-04T09:51:25.143 に答える