重点总结:ios_command 模块用用于用户模式(非enable特权模式)的命令,其下的命令authorize:yes将使进入特权模式(enable模式);ios_config模块用于配置模式下的命令。
1.get_arp
剧本:
---
- name: Get ARP information
hosts: all
gather_facts: false
tasks:
- name: show arp
raw: "show arp"
#我们将把返回的输出存储在一个名为“print_output”的变量中。
register: print_output
#打印输出“print_output”
- debug: var=print_output.stdout_lines
请注意,此剧本不包含用户名和密码,故需要再命令尾部指定用户并要求提示密码。
若在hosts文件中添加如下代码则可省略后面的-u、-k。实际上,若果添上,他会使得本能跳过的SSH密码输入又弹出提示。
此命令也可添加检索条件:
2.get_mac_address
剧本:
---
- name: Get MAC information
hosts: all
gather_facts: false
tasks:
- name: show mac address table
raw: "show mac address-table"
register: print_output
- debug: var=print_output.stdout_lines
输出:
3.get_version
(检索设备的显示版本信息并保存)
我们可以使用的另一个很酷的 Ansible 模块是 iOS command。官方文档查看:
说明摘:
-
该模块不支持在配置模式下运行命令。请使用ios_config配置 IOS 设备。
其他思科IOS模块总集:Index of all Modules — Ansible Community Documentation
【保存输出文件】
我所做的就是添加此代码以将输出保存到文件中。所以任务的名称是“save output to file”。我们将复制标准输出的内容。“inventory_hostname”是内置的ansible变量。意为:“在播放中迭代的“当前”主机的清单名称。”,“因此,我将使用库存主机名来保存基于设备名称的输出。”
相较于在实行剧本后查看实时返回结果,通过保存的输出文件进行查看是一个更好的选择。
Ansible 有所谓的魔法变量(Magic Variables)。因此,即使您没有自己定义这些变量,Ansible 也会自动为您提供一些变量。官方文档参见:Special Variables — Ansible Community Documentation
注意!!!:必须先创建指定保存的目标位置目录,此处为“./output”,必须保证该目录在命令执行时存在。
4.get_run
部分剧本:
灰色背景的部分,意思是“我们将进入特权模式。”并将在enable模式下运行后面设定的命令 show run。