oxidized网络设备自动备份

系统数据备份,对于运维工作来说是重要的一环。尤对网工来说,网络设备备份更是必不可少的一项工作。小规模网络,敲敲命令就能搞定,一般tftp一下就好,而稍有点规模的,就几十至上百台设备,依次手工操作备份,这样工作效率就很低下。

这时能够做到网络设备自动化备份,将是这一痛点的解决方案。本来初始设想通过学习ansible实现自动备份的目的,但就对网络设备telnet远程访问的方式,ansible实现起来就较有难度了。偶然在搜索解决方案时,找到了oxidized软件,同样是开源软件,在其实现上天然的支持了常规的远程方式,也就是说,网络设备只要通过telnet和ssh访问的,都可以进行自动备份。

oxidized在功能实现上,是需要识别具体网络设备品牌,然后才可以进行实际的备份动作。在oxidized软件包中有一个model目录,其下保存了大多数主流网络设备的rb文件,这个rb文件中配置了针对网络设备的一些常规操作,如登录telnet、ssh,还有show running-config等,然而并没有备份相关的tftp命令。后来经过实际验证,oxidized的备份,不同于tftp方式保存的是设备中的start.cfg文件,只是通过“show running-config”的方式,将所有配置保存到了一个文本文件中,而这也算是一种可恢复的备份方式了。

参考一

https://github.com/ytti/oxidized

参考二

https://www.opscaff.com/2018/04/18/oxidized-%E6%9C%80%E5%A5%BD%E7%94%A8%E7%9A%84%E7%BD%91%E7%BB%9C%E8%AE%BE%E5%A4%87%E5%A4%87%E4%BB%BD%E7%B3%BB%E7%BB%9F/

系统环境

 Ubuntu 18.04 LTS

安装

apt update
apt upgrade –y

apt-get install ruby ruby-dev libsqlite3-dev libssl-dev pkg-config cmake libssh2-1-dev libicu-dev
gem install oxidized
gem install oxidized-script oxidized-web

验证

oxidized -v
0.26.3

组件

  • config文件 存放配置文件
  • Sources字段 要备份设备的存放方式
  • Outputs字段 备份文件存放的方式
  • model字段:设备的厂商所用的os名称
  • router.db文件 存放被管理主机的地方

新建用户 oxidized

useradd -m -d /home/oxidized oxidized

配置oxidized 通过systemctl 管理

cp /var/lib/gems/2.5.0/gems/oxidized-0.26.3/extra/oxidized.service /lib/systemd/system

systemctl enable oxidized.service

oxidized目录

mkdir -p /home/oxidized/.config/oxidized

日志目录

mkdir /home/oxidized/.config/oxidized/logs/

备份文件存放目录

mkdir /home/oxidized/.config/oxidized/configs

设置用户目录和用户组

chown oxidized:oxidized /home/oxidized/.config/oxidized

配置文件

---
username: username #服务不检测,此项在router.db中检测
password: password #服务不检测,此项在router.db中检测
model: junos #服务不检测,此项在router.db中检测
interval: 3600
log: /home/oxidized/.config/oxidized/logs/oxidized.log
debug: false
threads: 30
timeout: 20
retries: 3
prompt: !ruby/regexp /^([\w.@-]+[#>]\s?)$/ #网络设备登录后匹配的提示符
rest: 127.0.0.1:8888 #web访问的地址,实际通过nginx重定向此地址
next_adds_job: false
vars: {}
groups: {}
models: {}
pid: "/home/oxidized/.config/oxidized/pid"
input:
  default: ssh, telnet
  debug: false
  ssh:
    secure: false
output:
  default: file
  file:
    directory: "/home/oxidized/.config/oxidized/configs"
source:
  default: csv
  csv:
    file: "/home/oxidized/.config/oxidized/router.db"
    delimiter: !ruby/regexp /:/
    map:
      name: 0
      model: 1
      username: 2
      password: 3
    gpg: false
model_map: #服务不检测,此项在router.db中检测
  cisco: ios #服务不检测,此项在router.db中检测
  juniper: junos #服务不检测,此项在router.db中检测

设备文件

#需要备份的设备列表
/home/oxidized/.config/oxidized/router.db
10.x.x.x:comware:admin:password

启动oxidized

systemctl restart oxidized.service

systemctl status oxidized.service
● oxidized.service - Oxidized - Network Device Configuration Backup Tool
   Loaded: loaded (/lib/systemd/system/oxidized.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-04-25 09:12:47 UTC; 52min ago
 Main PID: 21836 (oxidized)
    Tasks: 7 (limit: 4663)
   CGroup: /system.slice/oxidized.service
           └─21836 puma 3.11.4 (tcp://127.0.0.1:8888) [/]

查看日志

tail -f /home/oxidized/.config/oxidized/logs/oxidized.log 
I, [2019-04-25T09:12:48.346012 #21836]  INFO -- : Oxidized starting, running as pid 21836
I, [2019-04-25T09:12:48.347489 #21836]  INFO -- : lib/oxidized/nodes.rb: Loading nodes
I, [2019-04-25T09:12:48.497476 #21836]  INFO -- : lib/oxidized/nodes.rb: Loaded 1 nodes
I, [2019-04-25T09:12:55.093924 #21836]  INFO -- : Configuration updated for /10.x.x.x

查看备份目录

ls -l /home/oxidized/.config/oxidized/configs/
total 16
-rw-r--r-- 1 oxidized oxidized 8496 Apr 25 09:28 10.x.x.x

more /home/oxidized/.config/oxidized/configs/10.x.x.x
# H3C Comware Platform Software
# Comware Software, Version 5.20.99, Release 1110
# Copyright (c) 2004-2016 Hangzhou H3C Tech. Co., Ltd. All rights reserved.
# 
# H3C S5110-52P
# 128M    bytes DRAM
# 32M     bytes Flash Memory
# Config Register points to Flash

Web UI管理

#安装nginx
apt install nginx
#安装认证模块
apt-get install apache2-utils
#创建密码文件
mkdir -p /data/nginx/db/
cd /data/nginx/db/
touch passwd.db
#生成密码
htpasswd -c /data/nginx/db/passwd.db admin
#启动nginx服务
systemctl restart nginx.service

访问web管理

http://10.x.x.x/nodes
使用前边设置的admin和对应密码登录

已测试支持的网络设备厂商

其他只要在Model中有对应设备厂商的rb文件,一般应该都可以,待测试

#H3C
comware
#锐捷FW/飞塔FW
fortios
#华为
vrp


其他

支持设备类型的目录

 ls -l /var/lib/gems/2.5.0/gems/oxidized-0.26.3/lib/oxidized/model
 total 484
-rw-r--r-- 1 root root 2877 Apr 25 03:51 acos.rb
-rw-r--r-- 1 root root 1998 Apr 25 03:51 acsw.rb
-rw-r--r-- 1 root root  359 Apr 25 03:51 adtran.rb
-rw-r--r-- 1 root root  259 Apr 25 03:51 aen.rb
-rw-r--r-- 1 root root 1033 Apr 25 03:51 aireos.rb
-rw-r--r-- 1 root root  465 Apr 25 03:51 airos.rb
-rw-r--r-- 1 root root 2435 Apr 25 03:51 alteonos.rb
-rw-r--r-- 1 root root  216 Apr 25 03:51 alvarion.rb
-rw-r--r-- 1 root root 1325 Apr 25 03:51 aos7.rb
-rw-r--r-- 1 root root  581 Apr 25 03:51 aos.rb
-rw-r--r-- 1 root root 4043 Apr 25 03:51 aosw.rb
-rw-r--r-- 1 root root  198 Apr 25 03:51 apc_aos.rb
-rw-r--r-- 1 root root  487 Apr 25 03:51 arbos.rb
-rw-r--r-- 1 root root 1279 Apr 25 03:51 aricentiss.rb
-rw-r--r-- 1 root root 3407 Apr 25 03:51 asa.rb
-rw-r--r-- 1 root root 1277 Apr 25 03:51 asyncos.rb
-rw-r--r-- 1 root root  648 Apr 25 03:51 audiocodesmp.rb
-rw-r--r-- 1 root root  498 Apr 25 03:51 audiocodes.rb
-rw-r--r-- 1 root root 3113 Apr 25 03:51 awplus.rb
-rw-r--r-- 1 root root  249 Apr 25 03:51 axos.rb
-rw-r--r-- 1 root root 2187 Apr 25 03:51 boss.rb
-rw-r--r-- 1 root root  992 Apr 25 03:51 br6910.rb
-rw-r--r-- 1 root root 1208 Apr 25 03:51 c4cmts.rb
-rw-r--r-- 1 root root  576 Apr 25 03:51 cambium.rb
-rw-r--r-- 1 root root 1036 Apr 25 03:51 casa.rb
-rw-r--r-- 1 root root  838 Apr 25 03:51 catos.rb
-rw-r--r-- 1 root root  264 Apr 25 03:51 cisconga.rb
-rw-r--r-- 1 root root 1128 Apr 25 03:51 ciscosma.rb
-rw-r--r-- 1 root root 2088 Apr 25 03:51 ciscosmb.rb
-rw-r--r-- 1 root root  284 Apr 25 03:51 ciscovpn3k.rb
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351