Oxidized收集H3C交换机网络配置报错,not matching configured prompt (?-mix:^(<CD>)$)
背景:问题如上标题,H3C所有交换机配置的model都是comware
解决方案:
1、找到compare.rb
[root@oxidized model]# pwd
/usr/local/lib/ruby/gems/3.1.0/gems/oxidized-0.29.1/lib/oxidized/model
[root@oxidized model]# ll comware.rb
-rw-r--r-- 1 root root 2431 Mar 7 09:05 comware.rb
2、修改配置文件中的prompt
[root@oxidized model]# vim comware.rb #第七行
prompt /^([<\[]\S+[>\]])|(\[\S+-\S+\])$/
保存退出
3、重启oxidized并查看日志
[root@oxidized model]# systemctl restart oxidized
[root@oxidized model]# tail -f /root/.config/oxidized/logs/oxidized.log
rb文件中的prompt就是要匹配交换机的名字的,所以注意你的交换机的命令,如果是批量监控收集配置文件信息,就要注意交换机的统一格式命名,以下是comware类型的prompt介绍
# 定义 Comware 模型
class Comware < Oxidized::Model
# 设置命令行提示符的正则表达式
prompt /^([<\[]\S+[>\]])|(\[\S+-\S+\])$/
# 其他配置...
end
########
上述正则表达式 ^([<\[]\S+[>\]])|(\[\S+-\S+\])$ 的含义如下:
^:表示字符串的开始。
([<\[]\S+[>\]]):匹配以 < 或 [ 开头,中间是一个或多个非空白字符,然后以 > 或 ] 结尾的字符串,用于匹配用户视图和系统视图的提示符。
|:表示或的关系。
(\[\S+-\S+\]):匹配以 [ 开头,中间是一个或多个非空白字符,接着是 -,再接着是一个或多个非空白字符,最后以 ] 结尾的字符串,用于匹配接口视图的提示符。
$:表示字符串的结束。
#######
更精确的配置方式
如果你明确知道交换机的设备名,也可以使用更精确的正则表达式。例如,设备名为 H3C 时:
class Comware < Oxidized::Model
prompt /^(<H3C>)|(\[H3C\])|(\[H3C-\S+\])$/
# 其他配置...
end
####################
以下是一个完整的 comware.rb 文件示例,包含了 prompt 配置以及一些基本的命令设置:
class Comware < Oxidized::Model
# 设置命令行提示符的正则表达式
prompt /^([<\[]\S+[>\]])|(\[\S+-\S+\])$/
# 进入配置模式的命令
cmd :enter_config do
"system-view"
end
# 退出配置模式的命令
cmd :leave_config do
"return"
end
# 保存配置的命令
cmd :save do
"save force"
end
# 显示当前配置的命令
cmd :show do
"display current-configuration"
end
end
配置收集正常了~!