【发布时间】:2020-02-27 18:53:00
【问题描述】:
任何帮助将不胜感激!如何解决?问题似乎与 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\Administrator\PycharmProjects\Python Network Automation\venv\Scripts\python.exe" "C:/Users/Administrator/PycharmProjects/Python Network Automation/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
上面是收到的错误信息。
【问题讨论】:
-
您是否每次或有时都会收到此错误?
-
有时,在运行脚本几次之后。它会正常工作,然后我会收到 Socket Closed 错误。
-
我和你有同样的问题@EmmitTruth