1、安装tftp-server、 xinetd、expect
yum install tftp-server xinetd expect
systemctl restart xinetd.service
chkconfig tftp on
chkconfig xinetd on
service xinetd start
2.创建脚本文件
mkdir /home/Network_Config_Backup
cat >>/home/Network_Config_Backup/start.sh<<END
#!/bin/bash
#使用该脚本前需要安装tftp,xinetd,expect
#取时间戳
BACKUP_DATA=`date +%Y%m%d`
#创建时间戳的备份目录
mkdir -p /home/Network_Config_Backup/$BACKUP_DATA
#TFTP服务根目录授权
chmod 777 /home/Network_Config_Backup/$BACKUP_DATA
#修改TFTP根目录
sed -i "s/Network_Config_Backup\/......../Network_Config_Backup\/$BACKUP_DATA/" /etc/xinetd.d/tftp
echo
echo
echo
echo ------------------------------------------------------------
echo
echo 该脚本适用于Cisco、Huawei、H3C 网络设备使用
echo Cisco使用tftp方式将配置文件上传到服务器
echo Huawei、H3C使用窗口记录方式获取配置信息
echo
echo ------------------------------------------------------------
echo
echo 备份文件存放位置: /home/Network_Config_Backup/$BACKUP_DATA
echo
echo
echo
service xinetd restart
sleep 4
#账号密码及IP地址存放在user.passwd中,通过awk获取所有IP并存放在数组IPADDR(大写)
DEVICENAME=(`cat /home/Network_Config_Backup/user.passwd | awk '{print $1}'`)
#for循环,取出所有设备名称devicename(小写)
for devicename in ${DEVICENAME[@]}
do
#输出备份开始时间戳
echo "`date +%H:%M:%S` 开始备份$devicename"
#根据设备名称devicename取出相应交换机的IP地址、用户、密码
IPADDR=(`cat /home/Network_Config_Backup/user.passwd | grep "$devicename" | awk '{print $3}'`)
USERNAME=(`cat /home/Network_Config_Backup/user.passwd | grep "$devicename" | awk '{print $4}'`)
PASSWORD=(`cat /home/Network_Config_Backup/user.passwd | grep "$devicename" | awk '{print $5}'`)
TABLE=(`cat /home/Network_Config_Backup/user.passwd | grep "$devicename" | awk '{print $2}'`)
if [ $TABLE = Cisco ]
then
/usr/bin/expect >> /dev/null << EOF
set timeout 10
spawn telnet $IPADDR
expect "*sername:"
send "$USERNAME\r"
expect "*assword:"
send "$PASSWORD\r"
expect {
"*>" {
send "enable\r"
expect "*assword:"
send "$PASSWORD\r"
expect "*#"
send "copy running-config tftp:\r"
expect "*remote host*"
send "192.168.*.*\r"
#此处为ftp的服务地址
expect "*filename*"
send "$devicename\n"
expect "*!*"
send "\n"
}
"*#" {
send "copy running-config tftp:\r"
expect "*remote host*"
send "192.168.48.250\r"
expect "*filename*"
send "$devicename\n"
expect "*!*"
send "\n"
}
}
EOF
elif [ $TABLE = Huawei -o H3C ]
then
/usr/bin/expect >> /dev/null << EOF
set timeout 10
log_file /home/Network_Config_Backup/$BACKUP_DATA/$devicename
spawn telnet $IPADDR
expect "*ogin:"
send "$USERNAME\r"
expect "*assword:"
send "$PASSWORD\r"
expect "*>"
send "display current-configuration\r"
while (1) {
expect {
"*--- More ----" { send " " }
"return" { break }
}
}
EOF
fi
sleep 3
#判断备份目录中是否存在$devicename,如果存在则检查文件内是否存在字符串end或者return。如果文件不存在视为备份失败,如果不存在end或者return视为备份失败
if [ -f "/home/Network_Config_Backup/$BACKUP_DATA/$devicename" ];then
grep -E "^end$|^return$" /home/Network_Config_Backup/$BACKUP_DATA/$devicename
if [ $? -eq 0 ];then
echo "$devicename $IPADDR 备份成功"
echo "$devicename $IPADDR 备份成功" >> /home/Network_Config_Backup/$BACKUP_DATA/log
echo "-------------------------------"
else
echo "$devicename $IPADDR 备份失败"
echo "$devicename $IPADDR 备份失败" >> /home/Network_Config_Backup/$BACKUP_DATA/log
echo "-------------------------------"
fi
else
echo "$devicename $IPADDR 备份失败"
echo "$devicename $IPADDR 备份失败" >> /home/Network_Config_Backup/$BACKUP_DATA/log
echo "-------------------------------"
fi
done
END
3.添加交换机信息文件
cat >>/home/Network_Config_Backup/user.passwd<<END
*设备名 品牌 IP地址 用户名 密码*
sw1 Cisco 192.168.4.1 user password
END
4.修改tftp储存目录
[root@localhost Network_Config_Backup]# cat /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /home/Network_Config_Backup/20221016 -c
#-c允许该文件下创建文件
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
service xinetd start
5.运行脚本
bash /home/Network_Config_Backup/start.sh
#/home/Network_Config_Backup/ 下查看备份文件
参考至:https://blog.csdn.net/fsk2684/article/details/86757040