python-3.x - 如何通过 netmiko 或其他方式将渲染的 cisco 配置解析到大型网络设备
问题描述
请我完全是这个 python 编程的新手。我一直在努力将渲染配置推送到 GNS3 中的 64 个路由器,但没有成功。我会在这里感谢您的帮助。
我成功渲染了配置并可以在屏幕上打印出来。
我在这里使用了 Yaml 模板和 jinja2 模板
不知道如何将渲染结果推送到 GNS3 上配置的设备。
使用的 Python 代码:
import yaml
from jinja2 import Template
from netmiko import Netmiko
import netmiko
import json
from netmiko import ConnectHandler
from getpass import getpass
username = input('Enter your SSH username: ')
password = getpass()
#read your yaml file
with open("Just4testing8.yml") as file:
devices = yaml.safe_load(file)
#read your jinja template file
with open("Just4testing7.j2") as file:
template = Template(file.read())
for device in devices["devices"]:
final = template.render(
device=device["name"],
interfaces=device["interfaces"],
bgpasn=device["bgpasn"],
bgp_id=device["bgp_id"],
bgp_neighbors=device["bgp_neighbors"])
print(final)
解决方案
看起来您缺少您的 netmiko 代码。我想这就是你要找的。
这是一个使用命令列表的基本示例,我假设您会将渲染配置解析为该列表。我对渲染一无所知,但看起来像一本字典,所以你可以创建一个值列表。
** 样品 -- 未经测试**
from netmiko import ConnectHandler
from getpass import getpass
password = getpass()
cisco1 = {
"device_type": "cisco_ios",
"host": "192.168.255.1",
"username": "user",
"password": password,
}
cisco2 = {
"device_type": "cisco_ios",
"host": "192.168.1.1",
"username": "user",
"password": password,
}
devices = [cisco1, cisco2]
# you can use a your render here to build your list.
commands = ["cmd1","cmd2","cmd3"]
for device in devices:
net_connect = ConnectHandler(**device)
for cmd in commands:
output = net_connect.send_command(cmd) # works with show commands only
print(output) # Save to a file or append to to list/dictionary for use later.
net_connect.disconnect()
推荐阅读
- javascript - 用Javascript替换URL中所有匹配的查询参数值
- c# - LINQ 只有 where 子句还是 where plus Any 子句?
- c# - 如何将零附加到 dd/mm/yyyy c# like 01/01/2017
- c - 带有“df”的可用块
- python - 如何阻止 QThread 在 python PyQt5 中重复函数?
- python-3.x - 使用带有 cat 和多个进程管道的 popen 未获得 grep 结果
- android - 如何从第二个 Activity 开始获取 Activity?
- laravel - 通过级联/批量删除删除模型时运行代码
- reactjs - 查看用户是否已登录
- javascript - 如何将 DT::datatable 分页按钮的显示文本设置为自定义字符串?