只需部署这个脚本就可玩自动化,还是思科牛逼!

简介: 只需部署这个脚本就可玩自动化,还是思科牛逼!


EEM(Embedded Event Manager)作为一个自动化的脚本部署在设备上,可以根据指定的trigger来自动完成提前布置的任务,如信息的收集或特定的操作。一个完整的EEM需要包含Name、Trigger、Action,以下为EEM部署的示例,仅供参考。

注意:Catalyst 9000 需要思科DNA许可证才能支持EEM。

基本构成

1、EEM Name

event manager applet MY-SCRIPT authorization bypass <<<<< 创建一个名字叫MY-SCRIPT的EEM脚本。使用"authorization bypass"命令来规避权限问题,否则可能由于权限问题导致EEM无法生效。

2、EEM Trigger

a. 周期触发:

event timer watchdog time 120 maxrun 100<<<<<每 120秒运行一次,每次最多运行 100秒。

b. 特定时间或特定周期触发

eventtimercroncron-entry"12345"<<<<<1=分2=时3=日4=月5=星期(0表示周日) CronTimerExamples: "159***"<<<<<每天上午的9点15分触发 "0010**1-5"<<<<<每周一到周五的上午10点触发

c. 通过SNMP触发

eventsnmpoid1.3.6.1.4.1.9.2.1.56get-typenextentry-opgeentry-val50poll-interval1 当CPU超过50%时触发, 1.3.6.1.4.1.9.2.1.56 为 Cat9000的SNMP CPU OID,其他平台需对应修改。

d. 根据系统日志来触发:

eventsyslogpattern"NOPOWER_AVAIL:Interface"ratelimit60 当出现的日志中包含"NOPOWER_AVAIL:Interface"关键字后触发,ratelimit为每60s内只触发一次。

e. 系统自带的参数:

如当接口的total output 增长时触发: eventinterfacenameTe1/0/1parameteroutput_packets_droppedentry-opgeentry-val1000poll-interval1entry-typevalue

3、EEM Action

a. CLI Action

按顺序执行指令,注意所有序号需保持同样位数,如010和100,而不能写10和100. action010clicommand"en" action020clicommand"showversion|appendbootflash:EEM.txt"

b. 生成系统日志:

action050syslogmsg"Scripthascompleted"priority1<<<<<<将生成1级日志:"%HA_EM-1-LOG:xxx:Scripthascompleted"

c. 交互式CLI:

action430clicommand"clearlog"pattern"confirm" action431clicommand"" 当执行clearlog后,系统会出现交互式语句,匹配关键字confirm后输入"",相当于确认进行下一步。

d. 匹配SNMP的信息:

action010infotypesnmpoid1.3.6.1.4.1.9.2.1.56get-typenext action020syslogmsg"CurrentCPU:$_info_snmp_value"<<<<<系统收集当前OID的结果,并通过变量打印至日志中

e. If / Else / Elseif 语句

如果CPU 大于等于 85,则执行“end”之前的语句,否则执行“end”之后的语句。 action010infotypesnmpoid1.3.6.1.4.1.9.2.1.56get-typenext action020if$_info_snmp_valuege"85" action030syslogmsg"HighCPUdetectedinsidescript!" action040end action050syslogmsg"Thislineisnowoutsidethe–if-statement"

f. 循环语句

一个循环可以一遍又一遍地做同样的事情而不用写很多额外的行,如打印1到10: action010setloop_iteration1<<<<<设置变量"loop_iteration"为1. action020while$loop_iterationle10 action030syslogmsg"Iteration:$loop_iteration" action040incrementloop_iteration1 action050end action060syslogmsg"ScriptComplete"

g. 正则表达式匹配

正则表达式通常可以应用于特定命令的结果。Regex 还会在调用后创建一些预定义的变量。 action010clicommand"showipinterfacebrief|exunass" action020regexp"[123]"$_cli_resultmatch action030if$_regexp_resulteq1 action040syslogmsg"TheRegexfound1or2or3in$match" action050end 在showipinterfacebrief中搜索是否存在1或2或3的字段,如果有,则打印匹配结果

配置示例

01、使用SNMP监控来触发high cpu的信息收集

当CPU无规律瞬间变高时,我们可以使用如下脚本(OID为catalyst 9000的OID,其他平台需要对象修改)。 eventmanagerappletHigh_CPUauthorizationbypass eventsnmpoid1.3.6.1.4.1.9.2.1.56get-typenextentry-opgeentry-val80poll-interval1ratelimit60 action010infotypesnmpoid1.3.6.1.4.1.9.2.1.56get-typenext action020syslogmsg"CPUUtilizationishigh,CurrentCPU:$_info_snmp_value" action030clicommand"enable" action040clicommand"showclock" action041regex"([0-9]|[0-9][0-9]):([0-9]|[0-9][0-9]):([0-9]|[0-9][0-9])"$_cli_resultmatchHMS<<<<将匹配表达式中的小时,分钟和秒 action050settime$match action060clicommand"showclock|appendflash:CPU_info$time.txt" action070clicommand"showprocesscpusorted|appendflash:CPU_info$time.txt" ...... action190clicommand"monitorcaptureAcontrol-planein" action200clicommand"monitorcaptureAfilelocationflash:CPU_$H.$M.$S.pcap"pattern"confirm" action201clicommand"" action210clicommand"monitorcaptureAstart" action220wait10 action230clicommand"monitorcaptureAstop" !注意:Cat9200需要monitorcapturestop之后 运用"monitorcaptureAexportflash:CPU_$H.$M.$S.pcap"pattern"confirm"来将抓包文件保存到机器里面 当CPU超过80%时,将生成以下日志: %HA_EM-6-LOG:test:CPUUtilizationishigh,CurrentCPU:80 同时将生成基于时间的文件,例如以下: switch#dirflash:|iCPU 409606-rw-296Apr24202212:08:54+00:00CPU_12.08.51.pcap<<<抓包文件 262188-rw-49487Apr24202212:02:38+00:00CPU_info12:02:38.txt<<<show信息

02、应用正则表达式来监控设备上的变量

当需要监控非系统自定义的参数时,可以使用正则表达式来监控,如以下方式监控TCAM的使用情况: eventmanagerappletTCAMauthorizationbypass eventtimerwatchdogtime3600 action10clicommand"enable" action20clicommand"showplatformhardwarefedactivefwd-asicresourcetcamutilization" action30regex"[(6-9)][(0-9)]\.[(0-9)][(0-9)]"$_cli_result action40if$_regexp_resultge"1" action50syslogmsg"***TCAMabnormaldetected***"priority1 action60syslogmsg"$_cli_result" action70else action80syslogmsg"***TCAMnormal***" action90end 当TCAM的利用率超过60%时,将出现告警,同时会将TCAM的具体值通过log打印: %HA_EM-1-LOG:TCAM:***TCAMabnormaldetected*** Cat9500#$acfwd-asicresourcetcamutilization TableSubtypeDirMaxUsed%UsedV4V6MPLSOther ------------------------------------------------------------------------------------------------------ MacAddressTableEMI655363160.05%00031

03、使用循环语句和自定义变量来配置EEM

当我们需要配置大量的重复参数时可以使用以下方法来配置: eventmanagerappletPortauthorizationbypass eventtimerwatchdogtime300maxrun200 action100clicommand"en" action200setPORT"1"<<<<<设置一个变量名为PORT,同时将变量值置为1 action201while$PORTle24<<<<<设置循环语句,使得变量小于等于24 action202clicommand"showinterfaceG1/0/$PORT" action204regexp"err-disabled""$_cli_result" action205if$_regexp_resulteq"1" action206syslogmsg"***IssuedetectedatPORT_$PORTiserr-disabled***" action208clicommand"configureterminal" action209clicommand"interfaceG1/0/$PORT" action210clicommand"shutdown" action211clicommand"noshutdown" action212clicommand"end" action231syslogmsg"***PORT_$PORTisRecovery***" action242else action253syslogmsg"***Noissuedetected!PORT_$PORT***" action300incrementPORT action301wait1 action403end action404end 设备每300s自动检测接口1-24接口的状态,如果出现err-disabled, 则自动执行shutdown/no shutdown的操作。

04、交互式EEM

当执行一些需要交互的操作时,可能使用到以下方法: eventmanagerappletReloadauthorizationbypass eventtimercroncron-entry"10***"<<<<<每天的0:01分自动执行 action010clicommand"enable" action020clicommand"showswitch|iaaaa.bbbb.cccc" action030regexp"Active"$_cli_result action040if$_regexp_resulteq"1" action050syslogmsg"***Switch1isActive***" action070else action080clicommand"wr" action090wait10 action100clicommand"redundancyforce-switchover"pattern"confirm" action110clicommand"" action120end 每天的0:01分自动检测aaaa.bbbb.cccc是否为active设备,如果不是,则主备切换。
相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
4月前
|
人工智能 Ubuntu 前端开发
Dify部署全栈指南:AI从Ubuntu配置到HTTPS自动化的10倍秘籍
本文档介绍如何部署Dify后端服务及前端界面,涵盖系统环境要求、依赖安装、代码拉取、环境变量配置、服务启动、数据库管理及常见问题解决方案,适用于开发与生产环境部署。
1075 1
|
4月前
|
弹性计算 Devops Shell
用阿里云 DevOps Flow 实现 ECS 部署自动化:从准备到落地的完整指南
阿里云 DevOps Flow 是一款助力开发者实现自动化部署的高效工具,支持代码流水线构建、测试与部署至ECS实例,显著提升交付效率与稳定性。本文详解如何通过 Flow 自动部署 Bash 脚本至 ECS,涵盖环境准备、流水线搭建、源码接入、部署流程设计及结果验证,助你快速上手云上自动化运维。
429 0
|
5月前
|
运维 Prometheus 监控
3 年部署经验总结:用自动化工具轻松管理 300+ 服务器开源软件
三年前接手公司IT部门时,我满怀信心,却发现部署效率低下。尽管使用了GitLab、Jenkins、Zabbix等100+开源工具,部署仍耗时费力。文档厚重如百科,却难解实际困境。一次凌晨三点的加班让我下定决心改变现状。偶然看到一篇国外博客,介绍了自动化部署的高效方式,我深受启发。
256 0
|
7月前
|
存储 文字识别 自然语言处理
通义大模型在文档自动化处理中的高效部署指南(OCR集成与批量处理优化)
本文深入探讨了通义大模型在文档自动化处理中的应用,重点解决传统OCR识别精度低、效率瓶颈等问题。通过多模态编码与跨模态融合技术,通义大模型实现了高精度的文本检测与版面分析。文章详细介绍了OCR集成流程、批量处理优化策略及实战案例,展示了动态批处理和分布式架构带来的性能提升。实验结果表明,优化后系统处理速度可达210页/分钟,准确率达96.8%,单文档延迟降至0.3秒,为文档处理领域提供了高效解决方案。
840 1
|
3月前
|
弹性计算 人工智能 前端开发
在阿里云ECS上部署n8n自动化工作流:U2实例实战
本文介绍如何在阿里云ECS的u2i/u2a实例上部署开源工作流自动化平台n8n,利用Docker快速搭建并配置定时任务,实现如每日抓取MuleRun新AI Agent并推送通知等自动化流程。内容涵盖环境准备、安全组设置、实战案例与优化建议,助力高效构建低维护成本的自动化系统。
993 5
|
4月前
|
jenkins Java 持续交付
使用 Jenkins 和 Spring Cloud 自动化微服务部署
随着单体应用逐渐被微服务架构取代,企业对快速发布、可扩展性和高可用性的需求日益增长。Jenkins 作为领先的持续集成与部署工具,结合 Spring Cloud 提供的云原生解决方案,能够有效简化微服务的开发、测试与部署流程。本文介绍了如何通过 Jenkins 实现微服务的自动化构建与部署,并结合 Spring Cloud 的配置管理、服务发现等功能,打造高效、稳定的微服务交付流程。
647 0
使用 Jenkins 和 Spring Cloud 自动化微服务部署
|
3月前
|
人工智能 监控 Kubernetes
77_自动化脚本:Makefile与Airflow
在当今AI大模型时代,高效的工作流管理对于模型训练、推理和部署至关重要。随着大模型规模的不断增长和复杂度的提升,传统的手动脚本管理方式已无法满足需求。自动化脚本和工作流调度系统成为构建健壮、可重复、可扩展的LLM Pipeline的关键工具。其中,Makefile作为经典的自动化构建工具,与Airflow作为现代工作流调度平台的结合,为LLM开发团队提供了强大的工作流管理能力。
|
6月前
|
运维 监控 持续交付
还在为部署开源工具烦恼?自动化部署工具 Websoft9一键部署 300+ 开源应用
在数字化时代,开源工具因免费、灵活、可定制等特性广受欢迎,但其部署过程却常因环境配置复杂、依赖繁琐、耗时长等问题令人头疼。本文介绍了传统部署的三大难点,并提出两种解决方案:传统手动部署与集成化控制台部署。
还在为部署开源工具烦恼?自动化部署工具 Websoft9一键部署 300+ 开源应用

热门文章

最新文章