利用linux脚本ssh到路由器自动备份配置文件
2013-05-31 18:28
1211 查看
公司有几十台路由器,每周都要备份,并且备份格式要求如下:
地名_IP_日期_cfg.txt
这样的机械式劳动能不能利用linux脚本实现呢?答案是可以的:在网上找了一些资料,但只有一台路由的备份,多台路由器备份要怎么实现自动化呢?花了我将近我一周时间(本人比较笨,见笑了)在网上找资料终于搞定了,expect脚本用来处理交互方式还是蛮强大的,我就利用expect脚本来处理,代码如下:
1、利用expect+ssh方式备份:
#!/usr/bin/expect -f
set timeout 10
set Desip "192.168.5.10" #这是我tftp服务器IP
set pass "123*"
set Date [exec date +%Y.%m.%d]
array set IPDesFile {
"192.168.10.1" 深圳路由器
"192.168.11.1" 北京路由器
"192.168.15.1" 上海路由器
"192.168.16.1" 大连路由器
}
foreach {IP DesFile} [array get IPDesFile] {
spawn ssh admin@$IP
expect "yes/no" { send "yes\r" }
expect "password:" { send "$pass\r" }
if { $IP == "192.168.10.1" } {
expect ">" { send "save config from flash to tftp $Desip ${DesFile}_${IP}_${Date}.cfg.txt\r" }
} else {
expect ">" { send "save config from flash to tftp $Desip ${DesFile}_${IP}_${Date}.cfg.txt from bgroup0\r" }
}
expect { timeout 2 }
expect ">" {send "exit\r"}
}
spawn bash -c "mv /backup/tftp/*.txt /home/firewall/" #备份了配置文件将它们移动到另一个目录保存
expect eof;
2、利用bash+ftp备份:
另外,我还有几台交换机,利用ftp的方式来备份配置文件,下面是用bash方式实现的,我感觉下面的脚本应该可用数组、循环的方式实现,但是我没有找到好的方法,如果有朋友有好方法,请指教!
#!/bin/bash
cd /home/firewall
Filename=("switch1_2013_02_28.txt" "startup.cfg")
HOST=("192.168.20.1" "192.168.83.1")
USER=("admin" "admin2")
PASS=("123" "456")
Date=`date +%Y.%m.%d`
DesFile=("深圳_192.168.20.1_$Date.txt" "厦门_192.168.83.1_$Date.txt")
autoftp1(){
ftp -n ${HOST[0]} <<AUTOEOF
quote USER ${USER[0]}
quot PASS ${PASS[0]}
get ${Filename[0]} ${DesFile[0]}
binary
quit
AUTOEOF
}
autoftp1;
autoftp2(){
ftp -n ${HOST[1]} <<AUTOEOF
quote USER ${USER[1]}
quot PASS ${PASS[1]}
get ${Filename[1]} ${DesFile[1]}
binary
quit
AUTOEOF
}
autoftp2;
上面的脚本应该还有优化的空间(尤其是自动登录ftp的脚本),还请多多指点!承蒙感激!
本文出自 “小试一下” 博客,请务必保留此出处http://bill007.blog.51cto.com/1352815/1213911
地名_IP_日期_cfg.txt
这样的机械式劳动能不能利用linux脚本实现呢?答案是可以的:在网上找了一些资料,但只有一台路由的备份,多台路由器备份要怎么实现自动化呢?花了我将近我一周时间(本人比较笨,见笑了)在网上找资料终于搞定了,expect脚本用来处理交互方式还是蛮强大的,我就利用expect脚本来处理,代码如下:
1、利用expect+ssh方式备份:
#!/usr/bin/expect -f
set timeout 10
set Desip "192.168.5.10" #这是我tftp服务器IP
set pass "123*"
set Date [exec date +%Y.%m.%d]
array set IPDesFile {
"192.168.10.1" 深圳路由器
"192.168.11.1" 北京路由器
"192.168.15.1" 上海路由器
"192.168.16.1" 大连路由器
}
foreach {IP DesFile} [array get IPDesFile] {
spawn ssh admin@$IP
expect "yes/no" { send "yes\r" }
expect "password:" { send "$pass\r" }
if { $IP == "192.168.10.1" } {
expect ">" { send "save config from flash to tftp $Desip ${DesFile}_${IP}_${Date}.cfg.txt\r" }
} else {
expect ">" { send "save config from flash to tftp $Desip ${DesFile}_${IP}_${Date}.cfg.txt from bgroup0\r" }
}
expect { timeout 2 }
expect ">" {send "exit\r"}
}
spawn bash -c "mv /backup/tftp/*.txt /home/firewall/" #备份了配置文件将它们移动到另一个目录保存
expect eof;
2、利用bash+ftp备份:
另外,我还有几台交换机,利用ftp的方式来备份配置文件,下面是用bash方式实现的,我感觉下面的脚本应该可用数组、循环的方式实现,但是我没有找到好的方法,如果有朋友有好方法,请指教!
#!/bin/bash
cd /home/firewall
Filename=("switch1_2013_02_28.txt" "startup.cfg")
HOST=("192.168.20.1" "192.168.83.1")
USER=("admin" "admin2")
PASS=("123" "456")
Date=`date +%Y.%m.%d`
DesFile=("深圳_192.168.20.1_$Date.txt" "厦门_192.168.83.1_$Date.txt")
autoftp1(){
ftp -n ${HOST[0]} <<AUTOEOF
quote USER ${USER[0]}
quot PASS ${PASS[0]}
get ${Filename[0]} ${DesFile[0]}
binary
quit
AUTOEOF
}
autoftp1;
autoftp2(){
ftp -n ${HOST[1]} <<AUTOEOF
quote USER ${USER[1]}
quot PASS ${PASS[1]}
get ${Filename[1]} ${DesFile[1]}
binary
quit
AUTOEOF
}
autoftp2;
上面的脚本应该还有优化的空间(尤其是自动登录ftp的脚本),还请多多指点!承蒙感激!
本文出自 “小试一下” 博客,请务必保留此出处http://bill007.blog.51cto.com/1352815/1213911
相关文章推荐
- 利用Python编写linux自动备份脚本
- linux mysql备份 脚本执行成功 自动任务执行文件大小为0B
- Linux ftp 自动上传备份文件脚本
- 巧用Linux 架设TFTP Server备份路由器的配置文件
- (小升级版)vim修改时自动备份配置文件小脚本
- 利用Python通过telnet、ssh连接交换机、路由器等设备配置备份 第2版(粗略版)
- 巧用Linux 架设TFTP Server备份路由器的配置文件
- ssh自动备份主机文件的脚本
- linux(以ubuntu为例)下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件
- Linux ftp 自动上传备份文件脚本 .
- 使用python脚本利用SSH协议通过TFTP备份批量备份山石防火墙配置
- Linux ftp 自动上传备份文件脚本
- Linux ftp 自动上传备份文件脚本
- 利用windows脚本实现文件的自动备份
- Linux上实现网络设备配置文件自动备份
- linux自动备份文件 并上传到远程服务器 脚本实现
- vim修改时自动备份配置文件小脚本
- linux(以ubuntu为例)下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件
- 巧用Linux 架设TFTP Server备份路由器的配置文件
- 利用sqlyog配置MySQL自动备份sql文件