linux-shell脚本自动备份交换机配置(思科,华为,北电)

#!/usr/bin/bash

#下面这个文件路径是保存交换机信息的,位置如(交换机类型sc\hw\bd,登陆交换机管理用户,

#登陆交换机管理密码,交换机的IP,备份名,tftp服务器的IP)

swinfoo="./swconifgs/sw.config"

#while循环读取文件里的内容给到swinfo用awk分隔符,来取出需要的值 ,附加内容:其实这里用的内传参数,

#也可以用外参形式 要用到expect.exp(参数1,参数2,...),里面接收的时候为($argv[0],$argv[1],......)

while read swinfo;do

baktime=`date +%Y%m%d`

swtype=`echo $swinfo|xargs|awk -F',' '{print $1}'`

 

telnetname=`echo $swinfo|xargs|awk -F',' '{print $2}'`

 

telnetpw=`echo $swinfo|xargs|awk -F',' '{print $3}'`

 

telnetip=`echo $swinfo|xargs|awk -F',' '{print $4}'`

 

bakname=`echo $swinfo|xargs|awk -F',' '{print $5}'`"_"$telnetip"_"$baktime

 

tftpip=`echo $swinfo|xargs|awk -F',' '{print $6}'`

(

#加case条件判断变量交换机属什么类型(是思科还是华为.......) *代表默认 注意最后格式是 每个后面加两;即;;还有最后 esca

case $swtype in

sc)

#用expect进行自动交互 spawn启动交互命令  expect得到输入关键位(需要模拟一次才更清楚而清晰) send发送变量 \r回车

/usr/bin/expect<<EOF

spawn telnet $telnetip

expect "Username:"

send "$telnetname\r"

expect "Password:"

send "$telnetpw\r"

#下面是备份思科交换机的命令

send "copy run tftp:\r"

send "$tftpip\r"

send "$bakname\r"

send "! ############################\r"

send "exit\r"

#注意格式,结束eof

expect eof

EOF

#两个;是case语句的分支结点

;;

hw)

/usr/bin/expect<<EOF

spawn telnet $telnetip

expect "Username:"

send "$telnetname\r"

expect "Password:"

send "$telnetpw\r"

#下面是华为交换机的配置备份命令

send "tftp $tftpip put vrpcfg.zip $bakname\r"

send "! ######################################\r"

send "quit\r"

expect eof

EOF

;;

bd)

/usr/bin/expect<<EOF

spawn telnet $telnetip

#北电交换机比较特殊,需要等待1秒 ,出现图形化选择操作的界面后发送ctrl+y

sleep 1

#这里就是向控制端发送ctrl+y组合键的Acsll码的八进制值

#查询请到:https://blog.youkuaiyun.com/iodoo/article/details/49175749

send "\031"

sleep 1

#按北电配置备份下一步发送有下划线的字母,配置是C,所以发送C键的Acsll码的八进制

send "\143"

sleep 1

#进入特权模式

send "en\r"

#北电备份配置的命令

send "copy running-config tftp address $tftpip filename $bakname\r"

sleep 20 

send "exit\r"

sleep 1

#北电图形界面按L退出

send "\154"

send "! #######################################\r"

expect eof

EOF

;;

*)

echo "fail"

esac

#追加备份日志tee -a的作用是追加

)|tee -a ./log/swbak.log

#把交换机配置信息交到swinfo作为变量读取

done < $swinfoo

exit 0

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值