系统、网络运维好帮手:expect
接上篇“交換機定時自動備份配置文件的方法”,一個網絡里因為各種原因,可能會有多種品牌、不同服役年限的交換機,并不是所有都能支持類似kron或job命令,那這個時候只有用到expect了,debian下安裝非常簡單,自帶源里就有,直接 aptitude install expect即可,但有2個基本前提:libc6 (>= 2.3), tcl8.5 (>= 8.5.0),即便netinstall的精簡debian,也基本包含了這2個組件,安裝過程中不出錯,就可以忽略。
安裝完成后就可以直接運行設定的腳本了,腳本的權限至少得包含執行,我暫時把腳本設置為751的權限,因為要設置讓系統cron每天1點或2點定時運行它。
如何寫腳本,就像你如何與交換機進行交互操作一樣:登陸設備->提示用戶名或密碼->輸入用戶名或密碼->特權模式->提示用戶名或密碼->輸入用戶名或密碼->拷貝配置到服務器端->提示完成->退出登陸。
范例:
#!/usr/bin/expect
spawn telnet?switch ip
expect "Password:"
send "telnet password\r"
expect "switch name>"
send "en\r"
expect "Password:"
send "enable password\r"
expect "switch name#"
send "copy startup-config tftp:\r"
expect "Address of remote host"
send "tftp server ip\r"
expect "Destination filename"
send "config file name\r"
expect "switch name#"
send "exit\r"
可以看的出,基本就是一個交互的過程:系統反饋出現什么->發送什么命令。所以這個軟件的名字也很貼切“expect"。如果有多臺設備,就再增加幾段腳本在文件內。
現在,配置已經可以定時備份了,為了把整個管理流程機制做的更完善,我把tftp+web server+expect都做在一個系統上,expect把配置通過tftp傳到本地,web服務端可以對配置文件進行編輯、刪除、下載等操作。為了安全起見,再設置一下iptables,只允許特定網段tftp傳輸、web管理,畢竟tftp是個不×××全的協議,只要有地址、文件名都可以上傳下載。
最終成型:
題外話:expect在這里的腳本應用只是它一小部分的功能,在實現了所需要的后,我就淺嘗輒止了。對于其變量、一致性檢查、判斷等等,還有待我繼續學習。
博主點評:
expect工具讓我想到了pexpect工具,這兩者相似,后者是expect的一個python實現。
參考博文:Pexpect自動交互系統
本文轉自Grodd51CTO博客,原文鏈接:http://blog.51cto.com/juispan/2045079,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的系统、网络运维好帮手:expect的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysqldump: Couldn't
- 下一篇: cocos2d-x3.0 实现HTTP请