Hy vọng có thể là một ứng cử viên tốt để xem xét cho công việc.
Dưới đây là một ví dụ mẫu mà tôi đã tổng hợp lại để nhận xét cho bạn chơi. Nó sẽ đăng nhập vào WLC, lấy cấu hình đang chạy và nối nó vào một tệp bạn chọn.
Tên và vị trí tệp ví dụ là /var/log/script-log/config-log.txt
Bạn sẽ cần sửa đổi tên tệp và vị trí thành tệp bạn chọn (có đủ quyền) cũng như tên người dùng, mật khẩu và địa chỉ IP của WLC của bạn.
Cuối cùng, bạn có thể chỉnh sửa crontab của mình để thực thi tập lệnh sao lưu bằng khoảng thời gian mong muốn.
Ví dụ về Crontab:
# Run configuration backup every night at midnight
0 0 * * * /path/to/script/script-name
Ví dụ tập lệnh sao lưu cấu hình:
#!/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