接上文安装成功oxidized,本次讲述如何配置oxidized并备份网络配置
1、修改配置文件
[root@oxidized oxidized]# pwd
/root/.config/oxidized
[root@oxidized oxidized]# vim config
---
username: username #不用改,在router.db中设置
password: password #不用改,在router.db中设置
model: junos #不用改,在router.db中设置
resolve_dns: true
interval: 3600 #版本对比周期,秒,一小时一对比
use_syslog: false
debug: false
threads: 30
use_max_threads: false
timeout: 20
retries: 3
prompt: !ruby/regexp /^([\w.@-]+[#>]\s?)$/
rest: 0.0.0.0:8888 #web地址
next_adds_job: false
vars: {}
groups: {}
group_map: {}
models: {}
pid: "/root/.config/oxidized/pid"
crash:
directory: "/root/.config/oxidized/crashes"
hostnames: false
stats:
history_size: 10
input: #连接设备模式
default: ssh, telnet
debug: false
ssh:
secure: false
ftp:
passive: true
utf8_encoded: true
output: #导出配置模式
default: git #通过git对比配置
git:
user: Oxidized #git账号,需要在系统上安装git并设置
email: xxx@xxx.com #git邮箱,需要在系统上安装git并设置
repo: "/root/.config/oxidized/git-repos/default.git" #定义路径
source:
default: csv
csv:
file: "/root/.config/oxidized/router.db" #需要备份的网络设备,信息放在这里
delimiter: !ruby/regexp /:/
map:
name: 0 #设备信息按照如下0、1、2、3、4录入
ip: 1
model: 2
username: 3
password: 4
group: 5
gpg: false
model_map:
juniper: junos
cisco: ios
2、安装git
[root@oxidized oxidized]# yum install git -y
[root@oxidized oxidized]# git --version
git version 1.8.3.1
[root@oxidized oxidized]# git config --global user.name "Oxidized"
[root@oxidized oxidized]# git config --global user.email "xx@xxxx.com"
3、将oxidized加入开机自启
[root@oxidized oxidized]# find / -name oxidized.service
/etc/systemd/system/oxidized.service
[root@oxidized oxidized]# cp /usr/local/lib/ruby/gems/3.1.0/gems/oxidized-0.29.1/extra/oxidized.service /etc/systemd/system
[root@oxidized oxidized]# vim /etc/systemd/system/oxidized.service
将启动用户改成root
# Put this file in /etc/systemd/system.
#
# To set OXIDIZED_HOME instead of the default,
# ~oxidized/.config/oxidized, uncomment (and modify as required) the
# "Environment" variable below so systemd sets the correct
# environment.
[Unit]
Description=Oxidized - Network Device Configuration Backup Tool
After=network-online.target multi-user.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/oxidized
User=root
KillSignal=SIGKILL
#Environment="OXIDIZED_HOME=/etc/oxidized"
Restart=on-failure
RestartSec=300s
[Install]
WantedBy=multi-user.target
[root@oxidized oxidized]# systemctl enable oxidized
4、设置router.db,录入网络设备信息
[root@oxidized oxidized]# vim router.db
HuaWei4:10.10.100.54:vrp:admin:admin@123
安装配置文件定义的规则来写
厂商对应model:
#H3C
comware
#锐捷FW/飞塔FW
fortios
#华为
vrp
5、启动oxidized
[root@oxidized oxidized]# systemctl start oxidized
[root@oxidized oxidized]# systemctl status oxidized
● oxidized.service - Oxidized - Network Device Configuration Backup Tool
Loaded: loaded (/etc/systemd/system/oxidized.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2023-11-02 16:21:06 CST; 18min ago
Main PID: 7354 (oxidized)
CGroup: /system.slice/oxidized.service
└─7354 puma 3.11.4 (tcp://0.0.0.0:8888) [/]
Nov 02 16:25:21 oxidized oxidized[7354]: /usr/local/lib/ruby/gems/3.1.0/gems/sinatra-1.4.8/lib/sinatra/base.rb:1487:in `call'
[root@oxidized oxidized]# netstat-lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 890/sshd
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 7354/puma 3.11.4 (t
6、访问web
Last Status: 绿色(备份正常), 蓝色(正在备份), 红色(备份失败)
Last Update: 上一次备份的时间(配置文件里面默认1个小时 自定义修改interval的值即可)
Last Changed: 配置文件发生改变的时间
Actions: 点击第一个图标就能看到设备备份文件内容,第二个图标为配置文件比对, 第三个图标为手动强制备份
7、本地查看
[root@oxidized oxidized]# ll
total 20
-rw-r--r-- 1 root root 962 Nov 2 15:43 config
-rw-r--r-- 1 root root 780 Nov 2 15:10 config.bak
-rw-r--r-- 1 root root 1705 Nov 2 15:27 crash
drwxr-xr-x 3 root root 25 Nov 2 16:08 git-repos
drwxr-xr-x 2 root root 6 Nov 2 08:56 logs
-rw-r--r-- 1 root root 4 Nov 2 16:21 pid
-rw-r--r-- 1 root root 181 Nov 2 16:21 router.db
[root@oxidized oxidized]# cd git-repos/
[root@oxidized git-repos]# ll
total 0
drwxr-xr-x 6 root root 116 Nov 2 16:22 default.git
[root@oxidized git-repos]# git clone default.git my-config
Cloning into 'my-config'...
done.
[root@oxidized git-repos]# ll
total 0
drwxr-xr-x 6 root root 116 Nov 2 16:22 default.git
drwxr-xr-x 3 root root 96 Nov 2 16:55 my-config
[root@oxidized git-repos]# cd my-config/
[root@oxidized my-config]# ll
total 32
-rw-r--r-- 1 root root 7236 Nov 2 16:55 HuaWei4
-rw-r--r-- 1 root root 13078 Nov 2 16:55 HuaWei-CE6857E-YW-SW1&2
-rw-r--r-- 1 root root 7236 Nov 2 16:55 HuaWei-S5735-ServerMGT-SW
[root@oxidized my-config]# cat HuaWei
# Huawei Versatile Routing Platform Software
# VRP (R) software, Version 5.170 (S5735 V200R022C00SPC500)
# Copyright (C) 2000-2022 HUAWEI TECH Co., Ltd.
#
# DDR Memory Size : 512 M bytes
# FLASH Total Memory Size : 512 M bytes
# FLASH Available Memory Size : 253 M bytes
# Pcb Version : VER.A
。。。。。。
搞定~!
8、修改last update时区问题
因为时区问题,显示的时间比当前早8个小时,需要修改
[root@oxidized oxidized]# find /* -name '*job.rb*'
/opt/ruby-3.1.0/test/-ext-/postponed_job/test_postponed_job.rb
find: ‘/proc/27013’: No such file or directory
/usr/local/lib/ruby/gems/3.1.0/gems/oxidized-0.29.1/lib/oxidized/job.rb
/usr/local/lib/ruby/gems/3.1.0/gems/oxidized-0.26.3/lib/oxidized/job.rb
修改第二个
[root@oxidized oxidized]# vim /usr/local/lib/ruby/gems/3.1.0/gems/oxidized-0.29.1/lib/oxidized/job.rb
将Time.now.utc改成Time.now
一共三处,修改后:
保存退出,重启oxidized,再次访问web,last update的时区已恢复
9、配置文件版本对比
10、使用ftp再次备份配置文件目录
[root@oxidized git-repos]# cat backup_oxidized.sh
#/bin/bash
Dir=/root/.config/oxidized/git-repos/default
if [ -d $Dir ];then
rm -rf /root/.config/oxidized/git-repos/default
/usr/bin/git clone /root/.config/oxidized/git-repos/default.git && zip -r /ftp/oxidized/default-`date +%F`.zip default
else
/usr/bin/git clone /root/.config/oxidized/git-repos/default.git && zip -r /ftp/oxidized/default-`date +%F`.zip default
fi
[root@oxidized git-repos]# crontab -l
0 19 * * 5 /usr/bin/sh /root/.config/oxidized/git-repos/backup_oxidized.sh
安装ftp,并设置/ftp/oxidized为ftp目录
[root@oxidized git-repos]# yum install vsftpd -y
[root@oxidized git-repos]# mkdir -p /ftp/oxidized
[root@oxidized git-repos]# groupadd ftp
[root@oxidized git-repos]# useradd -g ftp -d /ftp/oxidized/ -M -s /sbin/nologin ftpuser
[root@oxidized git-repos]# echo "xxxxx" |passwd --stdin ftpuser
[root@oxidized git-repos]# chown -R ftpuser:ftp /ftp/
[root@oxidized git-repos]# chmod -R 755 /ftp/oxidized/
[root@oxidized git-repos]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
[root@oxidized git-repos]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog
ascii_upload_enable=NO
ascii_download_enable=NO
chroot_local_user=YES
chroot_list_enable=NO
chroot_list_file=/etc/vsftpd/chroot_list
listen=NO
listen_ipv6=YES
port_enable=YES
pasv_enable=YES
pasv_min_port=64000
pasv_max_port=65000
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
allow_writeable_chroot=YES
tcp_wrappers=YES
local_root=/ftp/oxidized
[root@oxidized git-repos]# vim /etc/vsftpd/user_list
新增ftpuser用户
[root@oxidized git-repos]# systemctl enable vsftpd && systemctl restart vsftpd
从其他linux机器访问(需已安装ftp,yum install ftp -y):
[root@localhost ~]# ftp 10.10.200.223
Connected to 10.10.200.223 (10.10.200.223).
220 (vsFTPd 3.0.2)
Name (10.10.200.223:root): ftpuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (10,10,200,223,250,192).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 42076 Nov 22 05:49 default-2023-11-22.zip
226 Directory send OK.
ftp>
注意:若连接ftp报错530,需修改以下pam文件
[root@oxidized git-repos]# vim /etc/pam.d/vsftpd
将以下注释掉,然后重启vsftpd
#auth required pam_shells.so
将auth required pam_shells.so修改为->auth required pam_nologin.so 或者将auth required pam_shells.so注释
从本地Windows访问:
需事先打开ftp服务:
访问:
或