なんらかの理由で一度だけ送信するだけでは不十分であることに気づきました...偶然に「発見」したので、次のようなものがありました。
def check_alive(telnet_obj):
try:
if telnet_obj.sock: # this way I've taken care of problem if the .close() was called
telnet_obj.sock.send(IAC+NOP) # notice the use of send instead of sendall
return True
except:
logger.info("telnet send failed - dead")
pass
# later on
logger.info("is alive %s", check_alive(my_telnet_obj))
if check_alive(my_telnet_obj):
# do whatever
数回実行した後、ログメッセージに「isalive True」と表示されているのに、コードが「if」に入力されておらず、ログメッセージ「telnetsendfailed--dead」が出力されていることに気付きました。最後の実装では、ここで言ったように、メソッドを3回呼び出してい.send()
ます(2つでは不十分な場合に備えて)。
それは私の2セントです、それが役立つことを願っています