Я получил идею от here, поэтому престижность их, код может быть что-то вроде этого
def check_alive(telnet_object):
try:
if telnet_object.sock:
telnet_object.sock.send(telnetlib.IAC + telnetlib.NOP)
telnet_object.sock.send(telnetlib.IAC + telnetlib.NOP)
telnet_object.sock.send(telnetlib.IAC + telnetlib.NOP)
return True
except:
pass
Идея довольно проста:
- если близко() был вызванный .sock будет 0, поэтому мы ничего не делаем
- В противном случае мы пытаемся отправить что-то безобидное, что не должно взаимодействовать с тем, что когда-либо было основной услугой, IAC + NOP был хорошим кандидатом. LaterEdit: кажется, что делать отправки только один раз не достаточно, поэтому я просто сделал это 3 раза, это не очень профессионально, я знаю, но ... «если это выглядит глупо, но это работает ... чем это не глупо»
- , если все идет хорошо, мы получаем «возвращение True» тыс мы получаем наш ответ, в противном случае, исключение игнорируются, и, как нет возврата, мы не получим None в качестве ответа
Я использовал этот метод для прямых и проксированных (SocksiPy) соединений с несколькими маршрутизаторами Cisco.