linux透過shell指令碼實現ssh互動式自動化
導讀 | expect是一個免費的程式設計工具語言,用來實現自動和互動式任務進行通訊,而無需人的干預(如:藉助Expect處理互動的 ,可以將互動過程:ssh登入,ftp登入等寫在一個 上,使之自動化完成。尤其適用於需要對多臺伺服器執行相同操作的環境中,可以大大提高系統管理人員的工作效率) |
我們透過 可以實現簡單的控制流功能,如:迴圈、判斷等。但是對於需要互動的場合則必須透過人工來干預,有時候我們可能會需要實現和互動程式如telnet伺服器等進行互動的功能。而expect就使用來實現這種功能的工具。expect是一個免費的程式設計工具語言,用來實現自動和互動式任務進行通訊,而無需人的干預(如:藉助Expect處理互動的 ,可以將互動過程:ssh登入,ftp登入等寫在一個 上,使之自動化完成。尤其適用於需要對多臺伺服器執行相同操作的環境中,可以大大提高系統管理人員的工作效率)
首先需要有expect:
可以透過以下命令檢視是否安裝,如果未安裝直接 yum install expect,如果不行請自行百度安裝。
[root@localhost home]# whereis expect expect: /usr/bin/expect /usr/share/man/man1/expect.1.gz [root@localhost home]# expect
編寫指令碼如下:
#!/bin/bash passwd="123456" /usr/bin/expect <<-EOF set timeout 50 spawn ssh root@10.10.22.38 expect { "*yes/*" { send "yes\r"; exp_continue } "*password:" { send "$passwd\r" } } expect "*]*" send "df -h\r" EOF
解釋一下:
/usr/bin/expect <<-EOF #開始用expcet執行標誌 EOF #結束標誌 expect {} #是expect要實現互動的命令集 [root@localhost home]# ssh root@10.10.22.38 "*yes/*" "*password:" { send "$passwd\r" } #如上如果遇到返回值 *代表無限字元,後面是password:則執行 send傳送字串 \r回車 expect "*]*" #等待出現]執行下一條命令 send "df -h\r" #執行命令並回車。 登入後複製 #!/bin/bash passwd="admin" /usr/bin/expect <<-EOF set timeout 50 spawn telnet 0 expect { "Login*" { send "admin\r"} } expect { "*assword:" { send "$passwd\r" } } expect { "*admin>" {send "security enable protocol-detect\r"} } expect { "*admin>" {send "security set port-abnormal detect 2\r"} } expect { "*admin>" {send "security show protocol-detect status\r"} } expect { "*admin>" {send "security show port-abnormal-detect level\r"} } expect { "*admin>" {send "exit\r"} } EOF
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2909342/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 自動批次實現linux機器ssh免密shell指令碼Linux指令碼
- Linux Shell互動式自動化運維程式Linux運維
- Linux Shell自動互動Linux
- shell指令碼-免互動指令碼
- linux - 怎麼自動填寫有互動的shell指令碼 - SegmentFaultLinux指令碼
- shell指令碼實現自動生成awr報告指令碼
- Linux通過Shell指令碼命令修改密碼不需要互動Linux指令碼密碼
- 幾個shell自動化指令碼(轉)指令碼
- 建立互動式shell指令碼對話方塊指令碼
- 互動式指令碼指令碼
- SHELL指令碼實現Oracle自啟動與關閉指令碼Oracle
- Linux使用Shell指令碼實現ftp的自動上傳下載Linux指令碼FTP
- 自動化指令碼安裝mysql shell指令碼範例指令碼MySql
- [shell]shell指令碼實現每天自動抽取資料插入hive表指令碼Hive
- shell指令碼自動化採集效能sql指令碼SQL
- Hadoop自動化安裝shell指令碼Hadoop指令碼
- 使用shell生成orabbix自動化配置指令碼指令碼
- dataguard switchover的自動化指令碼實現指令碼
- shell擴充套件——免互動指令碼套件指令碼
- 案例八:Shell自動化管理賬號指令碼指令碼
- 通過expect實現ssh協議自動輸密碼協議密碼
- 透過CRM系統實現工作流程自動化
- 透過shell指令碼分析足彩指令碼
- Linux通過shell執行自動化部署Linux
- ORACLE自動備份shell指令碼Oracle指令碼
- svn and maven 自動部署shell指令碼Maven指令碼
- 指令碼實現U盤自動掛載(linux)指令碼Linux
- 實現指令碼自動部署docker指令碼Docker
- rtop:一個透過 SSH 監控遠端主機的互動式工具
- shell指令碼自動清理超過指定大小的檔案指令碼
- specjvm自動化指令碼JVM指令碼
- docker指令碼自動化Docker指令碼
- 自動化RMAN指令碼指令碼
- 透過shell定製ash指令碼指令碼
- 自動重建失效index的shell指令碼Index指令碼
- 【Linux】【Shell】主控指令碼實現Linux指令碼
- 透過ssh工具啟動VNC,Windows系統如何透過ssh工具啟動VNCVNCWindows
- 透過自動化運維實現無人值守的故障自愈運維