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

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

是否可以编写代码(例如

如果可能的话,我可以使用哪种语言?

让我感到困惑的不是如何与Cisco IOS一起工作。关于我是否可以根据网络需求开发和更改路由器或其他设备?

#1 楼


几乎每一个运行至少IOS 12.2的Cisco IOS系统都具有内置的tcl shell可编程性。您可以将tcl脚本存储在闪存中并运行它们。
Cisco IOS还具有称为EEM(嵌入式事件管理器)的轻型本机编程环境。 EEM事件可由多种输入触发,例如某个端口上的数据包(通过Netflow),日志消息或接口打开/关闭。将EEM视为IOS中tclsh功能的子集; EEM比在TCL中编程要容易得多,但是根据要处理的IOS组合,您还可以获得不完善的功能支持。如果适合您的需要,可以按计划的时间表运行EEM。在此答案的底部,我提供了一个示例EEM脚本。请记住,EEM最适合少量的“ if-this,do-that”语句...当您要开始定义功能等时,只需硬着头皮使用tclsh
新Cisco产品支持一组特殊的罐装SDN API,其范围比我在手机上键入时所能解释的范围要广。这个家族中的一个例子包括Cisco APIC,但这只是它们可用的表面。

如果我不指出大多数Cisco脚本最后完成的话,我将不知所措。通过屏幕抓取,snmp和(最近)NETCONF已经20年了。您可以从CLI进行的任何操作都可以通过屏幕抓取来自动进行;我在职业生涯中花费了很大一部分时间。屏幕抓取程序通常将其脚本托管在外部linux系统上,并使用自己选择的武器连接到路由器...通常是以下语言之一:


TCL / Expect
Perl ...请参阅Net::SSH::PerlNet::Telnet::CiscoNet::SNMPCisco::Reconfig

Python ...请参阅pexpectnetmikoexscriptpysnmpciscoconfparse
Ruby。请参阅net-sshsnmpcisco



最后,较新的Cisco Nexus产品具有Python API(例如Nexus 9K的该API); python API通常比TCL API更易于处理,但是在这一点上,您只能使用Nexus系列。


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