该项目目前已经停止更新,但是基础功能能满足备份需求。 当前项目 github 地址:Oxidized
yum install -y centos-release-scl
yum install -y rh-ruby24 rh-ruby24-ruby-devel
scl enable rh-ruby24 bash
yum install -y make cmake which sqlite-devel openssl-devel libssh2-devel ruby gcc ruby-devel libicu-devel gcc-c++
gem install oxidized
oxidized-web 为 oxidized 的 web 前端,如果无需求,则可以不用装。
gem install oxidized-script oxidized-web
如果遇到系统执行 oxidized 出现 bash: oxidized: command not found
,请输入 scl enable rh-ruby24 bash
在第一次运行会自动在家目录生成配置文件,会出现 edit ~/.config/oxidized/config
再次执行oxidized命令会出现日志,此时告警提示为 no source csv config… 字样告警。
图中报错,结合配置文件,不难发现是缺少router.db文件,那么此文件究竟起什么作用?这得从官方介绍来看,source 部分是存放希望备份的网络设备清单,而这份清单的存储方式可以分为CSV, SQLite, MySQL和HTTP,默认为CSV,很显然需要创建一个名为router.db文件。
touch ~/.config/oxidized/router.db
再次执行oxidized,会返回 source returns no usable nodes 错误,
此时创建完成后依然没有启动,报错意思比较明显,里面没有任何节点,所以启不启动已经没有意义,那么需要添加一个节点,怎么加呢?此时要看到配置文件的map部分。
source:
default: csv
csv:
file: "/root/.config/oxidized/router.db"
delimiter: !ruby/regexp /:/
map:
name: 0
model: 1
gpg: false
model_map:
juniper: junos
cisco: ios
主要看map部分,其中 0 和 1 对应 router.db 里的顺序。
test:vrp
这种显然不满足企业复杂的需求,一般如下:
source:
default: csv
csv:
file: "/root/.config/oxidized/router.db"
delimiter: !ruby/regexp /:/
map:
name: 0
model: 1
ip: 2
username: 3
password: 4
group: 5
gpg: false
model_map:
juniper: junos
cisco: ios
huawei: vrp
那么对应 router.db 的文件是怎么写呢?如下图:
测试效果
此时可以看到输出有点问题
根据官方文档,output 也有 File, GIT, GIT-Crypt 和 HTTP,其中 git 和 file 方式最多,默认为 file,而如果选用的为 file,也就是本地存储的方式,需要一个目录,默认配置路径为 ~/.config/oxidized/configs,这里的报错提示是不存在该目录,也可以和 source 部分的 tree 结果对比,确实不存在,创建该目录即可解决该问题。
mkdir -p ~/.config/oxidized/configs
同样执行oxidized命令继续,此时可以看到正常运行,router.rb 里的节点正常节点,Ctrl+C停止服务,查看备份的配置。
前面安装了 web 可以访问网页看看。但是需要修改配置文件里的 127.0.0.1:8888 改为 真实IP:8888 才行
访问路径为:http://服务器IP:8888
虽然略显粗糙,但备份的需求还是可以满足的。