Любая помощь будет принята с благодарностью! Как это можно решить? Кажется, проблема связана с netmiko / paramiko и его взаимодействием со сценарием.
Заранее спасибо!
Код:
from netmiko import ConnectHandler
with open('Devices.txt') as f:
file_content = f.read().splitlines()
devices = list()
for item in file_content:
tmp = item.split(':') #tmp is a list
devices.append(tmp)
for device in devices:
net_device = {
'device_type': device[0],
'ip': device[1],
'username': device[2],
'password': device[3],
'port': 22,
'secret': device[3], # this is the enable password
'verbose': True
}
connection = ConnectHandler(** net_device)
if not connection.check_enable_mode():
connection.enable()
#connection.config_mode()
config_file = input('Enter configuration file for device type: ' + device[0] + ' with ip ' + device[1] + ':')
print('Sending commnands to device ...')
with open(config_file) as config:
commands = config.read().splitlines()
# print(commands)
output = connection.send_config_set(commands)
print(output)
print('Disconecting ....')
print('#' * 40)
connection.disconnect()
Выше приведен скрипт.
Ошибка:
"C: \ Users \ Администратор \ PycharmProjects \ Python Сетевая автоматизация \ venv \ Scripts \ python .exe "" C: / Users / Administrator / PycharmProjects / Python Сетевая автоматизация / Python Netmiko.py "
SSH connection established to 192.168.181.150:22
Interactive SSH session established
Enter configuration file for device type: cisco_ios with ip 192.168.181.150:Static Route Configuration.txt
Sending commnands to device …
Traceback (most recent call last):
File "C:/Users/Administrator/PycharmProjects/Python Network Automation/Python Netmiko.py", line 37, in <module>
output = connection.send_config_set(commands)
File "C:\Users\Administrator\PycharmProjects\Python Network Automation\venv\lib\site-packages\netmiko\base_connection.py", line 1620, in send_config_set
output += self.exit_config_mode()
File "C:\Users\Administrator\PycharmProjects\Python Network Automation\venv\lib\site-packages\netmiko\cisco_base_connection.py", line 55, in exit_config_mode
return super(CiscoBaseConnection, self).exit_config_mode(
File "C:\Users\Administrator\PycharmProjects\Python Network Automation\venv\lib\site-packages\netmiko\base_connection.py", line 1531, in exit_config_mode
if self.check_config_mode():
File "C:\Users\Administrator\PycharmProjects\Python Network Automation\venv\lib\site-packages\netmiko\cisco\cisco_ios.py", line 31, in check_config_mode
return super(CiscoIosBase, self).check_config_mode(
File "C:\Users\Administrator\PycharmProjects\Python Network Automation\venv\lib\site-packages\netmiko\cisco_base_connection.py", line 37, in check_config_mode
return super(CiscoBaseConnection, self).check_config_mode(
File "C:\Users\Administrator\PycharmProjects\Python Network Automation\venv\lib\site-packages\netmiko\base_connection.py", line 1496, in check_config_mode
self.write_channel(self.RETURN)
File "C:\Users\Administrator\PycharmProjects\Python Network Automation\venv\lib\site-packages\netmiko\base_connection.py", line 422, in write_channel
self._write_channel(out_data)
File "C:\Users\Administrator\PycharmProjects\Python Network Automation\venv\lib\site-packages\netmiko\base_connection.py", line 384, in _write_channel
self.remote_conn.sendall(write_bytes(out_data, encoding=self.encoding))
File "C:\Users\Administrator\PycharmProjects\Python Network Automation\venv\lib\site-packages\paramiko\channel.py", line 846, in sendall
sent = self.send(s)
File "C:\Users\Administrator\PycharmProjects\Python Network Automation\venv\lib\site-packages\paramiko\channel.py", line 801, in send
return self._send(s, m)
File "C:\Users\Administrator\PycharmProjects\Python Network Automation\venv\lib\site-packages\paramiko\channel.py", line 1198, in _send
raise socket.error("Socket is closed")
OSError: Socket is closed
Process finished with exit code 1
Выше есть получено сообщение об ошибке.