PyCharm - OSError: сокет закрыт - PullRequest
0 голосов
/ 27 февраля 2020

Любая помощь будет принята с благодарностью! Как это можно решить? Кажется, проблема связана с 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

Выше есть получено сообщение об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...