Date created: Sunday, January 27, 2019 11:44:50 AM. Last modified: Sunday, February 10, 2019 10:03:51 AM
Eve Config Bacup
#!/bin/bash
# Send "exit\r" over telnet twice to ensure the target device is at the login
# prompt, i.e. put any device into the same "state" before we start the
# backup process. For certain device we might need some extra commands (e.g.
# vMX or CSR1000v) in case the device console was left in config mode.
function exit_cli {
if [ "$2" == "vMX" ]; then
(
echo -e "exit configuration-mode\r"
sleep 2
) | telnet 127.0.0.1 $1 | tee "$2"
elif [ "$2" == "CSR1000v" ]; then
(
echo -e "end\r"
sleep 2
) | telnet 127.0.0.1 $1 | tee "$2"
elif [ "$2" == "XRv9k" ]; then
(
echo -e "clear\r"
sleep 2
echo -e "end\r"
sleep 2
) | telnet 127.0.0.1 $1 | tee "$2"
elif [ "$2" == "ios" ]; then
(
echo -e "end\r"
sleep 2
) | telnet 127.0.0.1 $1 | tee "$2"
fi
(
echo -e "exit\r"
sleep 2
echo -e "exit\r"
sleep 2
) | telnet 127.0.0.1 $1 | tee "$2"
}
# There is no ios backup script included in EVE, this function will produce
# the same result as the other backup scripts provided by EVE.
function backup_ios {
(
echo -e "\r"
sleep 2
echo -e "\r"
sleep 2
echo -e "enable\r"
sleep 2
echo -e "term len 0\r"
sleep 2
echo -e "show run\r"
sleep 10
echo -e "exit\r"
sleep 2
echo -e "exit\r"
) | telnet 127.0.0.1 $1 | tee "$2"
}
year_month=`date +"%Y-%m"` # 2019-01
timestamp=`date +"%Y-%m-%d--%H-%M-%S"` # 2019-01-27--09-17-31
backup_dir="/home/bensley/config_backups/$year_month/$timestamp"
compress_dir="/home/bensley/config_backups/$year_month"
script_dir="/opt/unetlab/scripts"
mkdir -p "$backup_dir"
# vMX, CSR1000v, XRv9K scripts expect to login to the device.
# PE1 - vMX VPC - Expects to login, will logout when finished, script edited to contain login details
# The vMX script very reliably times-out, run it twice and it works fine:
exit_cli 32769 "vMX"
$script_dir/config_vmxvcp.py -a get -f "$backup_dir/PE1.txt" -p 32769
sleep 2
$script_dir/config_vmxvcp.py -a get -f "$backup_dir/PE1.txt" -p 32769
# PE3 - CSR1000v - This device has no console authentication
exit_cli 32771 "CSR1000v"
$script_dir/config_csr1000v.py -a get -f "$backup_dir/PE3.txt" -p 32771
# RR1 - CSR1000v - This device has no console authentication
exit_cli 32772 "CSR1000v"
$script_dir/config_csr1000v.py -a get -f "$backup_dir/RR1.txt" -p 32772
# PE2 - XRv9k - Edited script to include login details, expects to login and will logout when finished
exit_cli 32773 "XRv9k"
$script_dir/config_xrv9k.py -a get -f "$backup_dir/PE2.txt" -p 32773
# RR2 - XRv9k - Edited script to include login details, expects to login and will logout when finished
exit_cli 32776 "XRv9k"
$script_dir/config_xrv9k.py -a get -f "$backup_dir/RR2.txt" -p 32776
# P1 - IOS
exit_cli 32774 "ios"
backup_ios 32774 "$backup_dir/P1.txt"
# P2 - IOS
exit_cli 32775 "ios"
backup_ios 32775 "$backup_dir/P2.txt"
# CPE1 - IOS
exit_cli 32777 "ios"
backup_ios 32777 "$backup_dir/CPE1.txt"
# CPE2 - IOS
exit_cli 32775 "ios"
backup_ios 32775 "$backup_dir/CPE2.txt"
cp /opt/unetlab/labs/MultiVendor-1.unl "$backup_dir/"
tar -cvzf $compress_dir/$timestamp.tar.gz $backup_dir
if [ "$?" -eq 0 ]; then
rm -rf "$backup_dir"
fi
Previous page: Email Example: File Server Stats
Next page: Monthly Rsync Backup Example