У меня есть список серверов и портов ip: (внешние адреса), и мне нужно проверить, может ли каждый сервер подключиться к этим адресам.
Цикл файла и попытка открыть sshtunnel и выполнить подключение как показано ниже
tunnel=sshtunnel.SSHTunnelForwarder(
ssh_host=host,
ssh_port=22,
ssh_username=ssh_username,
ssh_pkey=privkey,
remote_bind_address=(addr_ip, int(addr_port)),
local_bind_address=('0.0.0.0', 10022)
#,logger=sshtunnel.create_logger(loglevel=10)
)
tunnel.start()
# use socket
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
res = s.connect(('localhost', 10022))
print(res)
#s.connect((addr_ip, int(addr_port)))
s.close()
except socket.error as err:
print('socket err:')
print(err)
finally:
s.close()
time.sleep(2)
tunnel.stop()
Когда я делаю это, ответ всегда равен 0 (т.е. носок может подключаться к локальной привязке), даже если пульт дистанционного управления неверен - однако sshtunnelforwarder выдает
ERROR | Secsh channel 0 open FAILED: Network is unreachable: Connect failed
ERROR | Could not establish connection from ('127.0.0.1', 10022) to remote side of the tunnel
Как мне сделать, чтобы моя команда сокетов проверяла, доступен ли адрес remote_bind_address?
Я пытался использовать telnetlib, но получил похожую проблему
код практически такой же, с замененным блоком сокетов на
tn=telnetlib.Telnet()
tn.open('localhost',10022)
tn.close()
Я относительно новичок для всех это, так еще учусь. Если есть лучший способ добиться того, что мне нужно, пожалуйста, дайте мне знать.
Спасибо