Cisco IOS 编程、自动化和信息

网络工程 思科 思科-ios
2021-07-13 17:41:50

我对 Cisco IOS 感到困惑,我对此有一些疑问。

Cisco IOS 用于路由器和其他设备。

是否可以为此编写代码(如 PHP)?

如果可能,我可以使用什么语言?

令我困惑的不是如何使用 Cisco IOS;是关于我是否可以根据我对网络的需要来开发和更改我的路由器或其他设备?

1个回答
  1. 几乎每个运行至少 IOS 12.2 的Note 1 Cisco IOS 系统都具有内置的 tcl shell 可编程性您可以将 tcl 脚本存储在闪存中并运行它们。

  2. Cisco IOS 还具有称为 EEM(嵌入式事件管理器)的轻型本地编程环境。EEM 事件可以由多种输入触发,例如某个端口上的数据包(通过 Netflow)、日志消息或接口开启/关闭。将 EEM 视为 IOS 中 tclsh 功能的子集;EEM 比在 TCL 中编程更糟糕,但根据您正在处理的 IOS 组合,您也会获得参差不齐的功能支持。如果满足您的需要,EEM 可以按 cron 计划运行。这个答案的底部,我包含了一个示例 EEM 脚本;请记住,EEM 最适合少量的“if-this, do-that”语句……当您想开始定义函数等时,只需咬紧牙关使用tclsh.

  3. 新的 Cisco 产品支持一组特殊的罐装 SDN API,其范围比我在手机上打字时所能解释的更广泛;该系列中的一个示例包括Cisco APIC,但这只是它们可用产品的皮毛。

  4. 如果我没有指出在过去 20 年中完成的大部分 Cisco 脚本编写都是通过screen-scraping、snmp 和(现在)NETCONF完成的,那我就是失职了您可以从 CLI 执行的任何操作,都可以通过屏幕抓取实现自动化;我职业生涯的大部分时间都在做这件事。屏幕抓取工具通常将脚本托管在外部 linux 系统上,并使用自己选择的武器连接到路由器……通常是以下语言之一:

  5. 最后,较新的 Cisco Nexus 产品有一个 Python API(例如Nexus 9K 的这个API );python API 通常比 TCL API 更容易处理,但此时您仅限于 Nexus 系列。


注 1我所知道的唯一例外是 Cisco 3550,它在 12.2中没有tclsh