问题标签 [junos-automation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bash - 如何使用 Ansible/Jinja2 准备 Ansible 模块使用的 Ansible 清单、剧本和配置文件?
我routers
在版本控制系统中有一个纯文本文件,其中包含由换行符分隔的主机名:
我在版本控制系统中也有路由器配置模板作为纯文本文件。例如:
我无法更改这两种文件的格式,因为它们被其他系统使用。现在我需要的是从这个文件创建 Ansible 库存文件,从路由器配置模板创建Ansible junos_configrouters
模块的配置文件,最后在 YAML 中创建 Ansible playbook。目前,我为此使用 bash 脚本。简而言之,它需要四个参数:
routers
文件- 配置模板文件(例如
system:syslog
上面描述的) - 票务系统票号(整数)
- 注释字符串(在路由器中用于描述更改)
根据上面的示例,routers
文件被转换为以下库存文件:
system:syslog
文件被转换为<ticket_nr>.cfg
具有以下内容的文件名:
基本上,bash 脚本会做这样的事情:
最后生成剧本文件:
<comment>
并且<ticket_nr>
是给 bash 脚本的参数。此外,此 bash 脚本会检出所提及routers
文件和配置模板的最新版本。
现在有没有更好的方法可以在没有 bash 的情况下完成这一切?虽然这可行,但我觉得我做错了,我严重依赖 bash。是否有可能在 Ansible/Jinja2 中完成所有这些工作?
ansible - Ansible 2.3 核心模块 junos_config - 失败“无法打开外壳”
对于核心模块 junos_config 的 Ansible 2.3,我们会收到错误“无法打开 shell”。
我的剧本
输出:
这适用于 Ansible 2.2
junos-automation - Junos 创建控制台对象而不是设备对象
我正在开发一个零日配置工具,并且正在尝试将配置部署到 EX2200 交换机。我正在使用 PyEZ 框架连接到设备:
对象 dev 应该是 Device 类的一个实例,但是当我使用 dev._ class_ 检查它的类时,它会显示类“jnpr.junos.console.Console”。我想通过 jinja2 模板传递 dev 配置,
但是在加载配置时它给了我以下错误:
任何帮助将不胜感激。谢谢!
junos-automation - pyEZ:如何获取 junos 默认组
我正在开发一个自动化 junos 防火墙策略创建工作流程的项目。我发现 pyEZ 是我案例中最可行的选择。
虽然我可以通过使用rpc.get_config()
方法以 xml 格式从设备中检索完整的配置。不幸的是,我没有在检索到的 xml 文件中看到默认的 junos 应用程序。但是我可以在设备上手动运行命令时看到它们
显示配置组 junos-defaults 应用程序 | 显示集
设置组 junos-defaults 应用程序 应用程序 junos-ftp 应用程序协议 ftp
...
请在下面找到当前用于获取配置的片段
from jnpr.junos import Device
from lxml import etree
dev = Device(host='xxxx', user='demo', password='demo123', gather_facts=False)
dev.open()
cnf = dev.rpc.get_config()
print etree.tostring(cnf)
dev.close()
请让我知道是否有任何此类方法可用于获取默认应用程序组详细信息。
非常感谢,
普拉比尔
python - Junos_config 不再适用于 ansible 2.5 python jsonDecoderError
由于我们从 ansible 2.4.3 升级到 2.5.0,Junos_config 失败并出现与 jasonDecoderError not found 相关的错误。在做了一些研究之后,似乎这个属性只在 python 3.5 及更高版本中受支持。我们正在运行 python 2.7.6。
但是 Ansible 2.5 仍然应该与 python 2.7 兼容,对吧?那么我们为什么会遇到这种情况呢?
谢谢,
ansible - 如何解决 Junos_module 命令中无法使用管道的问题
我正在尝试使用 ansible 在瞻博网络设备上自动执行某些命令。但是命令要求我使用'|' (管道)。阅读 Junos_command 模块文档,无法使用管道。
This module does NOT use the Junos CLI to execute the CLI command. Instead, it uses the <command> RPC over a NETCONF channel. The <command> RPC takes a CLI command as it’s input and is very similar to executing the command on the CLI, but you can NOT include any pipe modifies (i.e. | match, | count, etc.) with the CLI commands executed by this module.
我尝试使用转义字符\
,但它仍然不起作用。
我想到的是通过 ansible 使用原始 shell 命令来 ssh 到设备并运行命令(独立于 junos_command 模块),但这似乎需要做很多工作,而且我放弃了很多有用的功能,因为不使用该模块。
我可以使用哪些其他方法来使用此模块实际通过管道传递命令。
ansible - 如何过滤输出 - 使用 Ansible 的 Junos 自动化
我的代码的目的是从配置中过滤特定的路由实例名称。
我的搜索是在 configuration-> Routing -Instances->Instance -> name -> MY RI 中的路由实例以及所有具有 MY RI 的行我对 Filter 和传递 kwargs 没问题,但我遇到了问题。
代码:
有什么建议么。会有多个 RI,我必须搜索一个 RI 并打印它或存储所有具有该 RI 名称的行
python - 从 python 执行时,Junos 设备 CLI 命令给出错误的输出
当我尝试从 python 执行 Device.cli(....) 命令时,它给了我错误的输出。可能是什么问题?
例如,如果我直接在 Juniper Device CLI 上执行以下命令,它会给出正确的输出,并匹配 sadasd-sdasd-asdasd。
但是,如果我使用 python 从 Junos CLI 执行相同的命令,则输出是整个配置,而不是与过滤器字符串匹配。
python - 需要帮助弄清楚如何解析和提取端口模式文件?
我有一个包含以下信息的文本文件:
在其他人的帮助下,我已经能够提取接口 id (ge-2/0/0) 以及描述。
代码如下:
这给了我一个结果:
到目前为止,这对我来说意义重大,我真的认为我将能够弄清楚如何深入挖掘界面以提取“端口模式”。
到目前为止,我的尝试都失败了。
这是我试图挖掘该信息但无济于事的一般思路:
我得到以下信息,但我无法弄清楚。
任何有关实现此目的的建议将不胜感激。
configuration - 使用 TFTP 在 JUNOS 中进行配置备份
有没有办法在 Junos 中使用像 Cisco 这样的 TFTP 进行自动备份。我找不到像这样的任何特定文档。我已经使用这些命令在 CISCO XR 路由器中完成了它:
现在我需要在 JUNOS 中完成