Питон с НетМико. Есть ли способ указать исходный интерфейс (сокет) на сервере?

#python #ssh #netmiko

Вопрос:

Пытаюсь понять, как использовать исходный код сокета с netmiko. Пока что не везет…(

  from netmiko import ConnectHandler
 import socket

 cisco_881 =
 {
'device_type': 'cisco_ios',

'host':   '192.168.2.241',
'username': 'admin',
'password': 'admin', 
'secret': 'admin', 
}

net_connect = ConnectHandler(**cisco_881)
output = net_connect.send_command('show interface')
print(output)
 

Комментарии:

1. Я не совсем понимаю, что ты имеешь в виду. netmiko устанавливает ssh-соединение с устройством и обменивается данными по нему.

2. Укажите в разделе с помощью обработчика подключений интерфейс исходного адаптера для исходящих подключений netmiko.

Ответ №1:

Это работает для SSH

 import socket
sok = socket.socket()
sok.bind(("127.0.0.1", 0))
sok.connect((host, 22))
#Then on the ConnectHandler specify the src socket.
net_connect = ConnectHandler(**cisco_881, sock=sok).
 

Для Telnet Netmiko использует telnetlib, и он принимает только аргументы хоста, порта и времени ожидания. Единственным решением было скопировать telnetlib.py в текущий каталог и измените строку ниже. Если кто-нибудь найдет альтернативный метод, пожалуйста, напишите!!!

Это работает для telnet

 #Modify telnetlib.py

#From:
self.sock = socket.create_connection((host, port), timeout

#To: 
self.sock = socket.create_connection((host, port), timeout, ("Your source IP", 0))
 

Спасибо.