Beklenti , iş için düşünmek için iyi bir aday olabilir.
Aşağıda birlikte oynadığım için yorumladığım bir örnek şablon var. Bir WLC'de oturum açar, çalışan yapılandırmayı alır ve istediğiniz bir dosyaya ekler.
Örnek dosya adı ve konumu /var/log/script-log/config-log.txt
Dosya adını ve konumunu, seçtiğiniz bir dosyada (yeterli izinlerle) ve WLC'nizin kullanıcı adını, parolasını ve IP adresini değiştirmeniz gerekir.
Son olarak, crontab'ınızı istediğiniz bir aralığı kullanarak yedekleme komut dosyasını yürütmek üzere düzenleyebilirsiniz.
Crontab örneği:
# Run configuration backup every night at midnight
0 0 * * * /path/to/script/script-name
Yapılandırma yedekleme komut dosyası örneği:
#!/usr/bin/expect
set timeout 15
set user "username-here"
set password "password-here"
set ipaddress1 "ip-address-here"
# Store the current date in 'date' and add header to log for appending separation
catch { exec sh -c { date } } date
set env(date) "$date"
exec sh -c {
{
echo -e "\n\n==================================================="
echo -e "= WLC Configuration - $date"
echo -e "===================================================\n\n"
} >>/var/log/script-log/config-log.txt
}
# Log to the log.txt file and append to the log on subsequent runs (a)
set log [open "/var/log/script-log/config-log.txt" a]
set accum {}
# Expect diagnostic information with 1 | off = 0
exp_internal 0
# View stdout with 1 | off = 0
log_user 0
# Connect to physical WLC (ipaddr) with ssh
spawn ssh $ipaddress1
match_max 100000
sleep 1
match_max [expr 32 * 1024]
while 1 {
expect {
"no)?" {send "yes\r"}
"n as:*" {send "$user\r"}
"ser:*" {send "$user\r"}
"assword:*" {send "$password\r"}
"r) >" {break}
"denied" {send_user "Can't login\r"; exit 1}
"refused" {send_user "Connection refused\r"; exit 2}
"failed" {send_user "Host exists. Check ssh_hosts file\r"; exit 3}
timeout {send_user "Timeout problem\r"; exit 4}
}
}
# send carriage return (\r) to make sure we get back to CLI prompt
send "\r"
sleep 1
# Remove scroll limit and show running configuration
send "config paging disable\r"
sleep 1
send "show run-config\r"
sleep 1
expect {
"nue..." {send "\r"}
}
sleep 1
send "logout\r"
sleep 1
# Upon logging out you can either save any pending changes with y or simply use n to ignore them
send "y\r"
sleep 4
# Grab string that matched the greedy regexp
expect {
-regexp {..*} {
set accum "${accum}$expect_out(0,string)"
exp_continue
}
}
puts $log $accum