小型自動化運維--expect指令碼
expect可以讓我們實現自動登入遠端機器,並且可以實現自動遠端執行命令。知道使用者名稱和密碼或者是使用金鑰驗證都可以使用,下面介紹expect 指令碼實現登陸和遠端命令:
# yum install -y expect openssh-clients 【依賴 ssh ,通訊的機器都要安裝 openssh-clients】
# vim /usr/local/sbin/1.expect
#! /usr/bin/expect
set host "192.168.8.120"
set passwd "wtf"
spawn ssh root@$host
expect
"password:" }
interact
#! /usr/bin/expect
set host "192.168.8.120"#這個ip指:終端要遠端的那台主機的位址
set passwd "wtf"#這個wtf是要遠端的那台主機的密碼
spawn ssh root@$host#spawn 是 expect 的語句,後面是登陸另外一台機器的命令
expect#\r 在 expect 指令碼裡面代表回車,\n代表換行
"password:" }
interact#expect 結束符,也可以使用expect eof,eof是end of file的縮寫
# chmod +x /usr/local/sbin/1.expect #授予執行許可權
兩種執行方式:
# /usr/local/sbin/1.expect 【執行命令,無需 /bin/sh ,因為這並不是 shell 指令碼】
# /usr/bin/expect /usr/local/sbin/1.expect 【執行命令,使用 expect 】
(1)expect 指令碼和 shell 結構很像,但是並不一樣。 expect 並不是 shell。
(2)expect 指令碼裡面有密碼有使用者名稱,比較不安全,在不會使用自動化運維工具如 puppet的情況下,先使用 expect 這樣的自定義指令碼的形式,實現自動化。
(3)expect適用於比較小型的公司,伺服器不是太多的情況,如果伺服器數量很多(幾百台上千臺),則需要借助puppet 自動化運維工具。
小型自動化運維 expect指令碼V2版
小型自動化運維 expect指令碼v2版 在實際運維工作中,需要我們向遠端主機同步資料,可以用rsync來實現。那麼用expect指令碼怎麼實現資料傳輸完成之後自動退出遠端主機呢?在開始expect指令碼v2版之前,我們先來看下,使用expect指令碼來實現遠端主機的登入,指令碼如下 usr bin...
小型自動化運維 expect指令碼之傳遞函式
小型自動化運維 expect指令碼之傳遞函式 root shiyanji vim 3.expect usr bin expect set user lindex ar 0 set host lindex ar 1 set passwd wtf set cm lindex ar 2 spawn ssh...
Linux 自動化運維之expect
expect是乙個自動化互動套件,主要應用於執行命令和程式時,系統以互動形式要求輸入指定字串,實現互動通訊。expect自動互動流程 spawn啟動指定程序 expect獲取指定關鍵字 send向指定程式傳送指定字元 執行完成退出.注意該指令碼能夠執行的前提是安裝了expect yum instal...