python - python netmiko错误-在3个路由器中配置环回的代码
问题描述
我正在尝试通过python自动化分别在Router1/2/3中配置loopback1/2/3,下面是我的代码。
from netmiko import ConnectHandler
i = 0
for n in range (177,180):
i += 1
HOST = "192.168.122." + str(n)
ROUTER = {
'device_type': 'cisco_ios',
'ip': HOST,
'username': 'cisco',
'password': 'cisco',
}
device = [ROUTER]
for devices in device:
net_connect = ConnectHandler(**devices)
output = net_connect.send_config_set("int lo" + str(i) + "\n" + "ip address " + str(i) + "." + str(i) + "." + str(i) + "." + str(i) + " 255.255.255.255")
print (i)
运行代码时出现错误,请参见下文。
root@NetworkAutomation-1:~# python3 netmikoconfigmultiplerouters-2.py
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/paramiko/channel.py", line 699, in recv
out = self.in_buffer.read(nbytes, self.timeout)
File "/usr/local/lib/python3.8/dist-packages/paramiko/buffered_pipe.py", line 164, in read
raise PipeTimeout()
paramiko.buffered_pipe.PipeTimeout
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/netmiko/base_connection.py", line 569, in _read_channel_expect
new_data = self.remote_conn.recv(MAX_BUFFER)
File "/usr/local/lib/python3.8/dist-packages/paramiko/channel.py", line 701, in recv
raise socket.timeout()
socket.timeout
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "netmikoconfigmultiplerouters-2.py", line 18, in <module>
output = net_connect.send_config_set("int lo" + str(i) + "\n" + "ip address " + str(i) + "." + str(i) + "." + str(i) + "." + str(i) + " 255.255.255.255")
File "/usr/local/lib/python3.8/dist-packages/netmiko/base_connection.py", line 1875, in send_config_set
new_output = self.read_until_pattern(pattern=re.escape(cmd.strip()))
File "/usr/local/lib/python3.8/dist-packages/netmiko/base_connection.py", line 651, in read_until_pattern
return self._read_channel_expect(*args, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/netmiko/base_connection.py", line 579, in _read_channel_expect
raise NetmikoTimeoutException(
netmiko.ssh_exception.NetmikoTimeoutException: Timed-out reading channel, data not available.
root@NetworkAutomation-1:~#
有人可以帮帮我吗?
在此先感谢 Nagsheshu。
解决方案
Netmiko 的 send_config_set 需要一个命令列表,所以我不会尝试构造多行字符串。相反,我会做类似的事情:
# Do you really just want it to be i.i.i.i for the IP?
cmd_list = [
f"interface Loopback{i}",
f"ip address {i}.{i}.{i}.{i} 255.255.255.255"
]
output = net_connect.send_config_set(cmd_list)
推荐阅读
- python - 在 Python 中使用 Pandas 将 csv 的页脚(最后几行)保存为单独的文件
- android - android:filterTouchesWhenObscured="true" 不适用于暮光之城应用
- youtube-api - 如何通过 API V3 获取播放列表的第一个视频缩略图?
- java - 如何在这个递归代码中逃脱无限循环?
- keycloak - keycloak 中的新主题类型
- android-studio - 重置 JSON 架构验证
- r - R从下面的行中减去每隔一行
- node.js - 我们可以以某种方式重命名正在使用 puppeteer 下载的文件吗?
- r - 从 R 中的 Earth Microbiome Project (release1) 导入 .biom 文件时出现问题
- html - 显示 flex 中的问题与文本