expect是unix系統中用來進行自動化控制和測試的軟體工具,應用在互動式軟體中如telnet,ftp,passwd,fsck,rlogin,tip,ssh等等。
linux中我們經常寫指令碼處理一些繁瑣的任務,但不幸的是很多互動式的命令我們不得不人肉響應。
expect可以代替我們實現與系統的互動。
我們可以通過expect實現遠端自動更改使用者密碼,而不需要手動輸入舊密碼和新密碼:
#!/bin/bashchange-passwdusr_passwd='
old_passwd
'new_passwd='
new_passwd
'while
read ip
do /usr/bin/expect <
set timeout -1
spawn
ssh -t mina.xiang@$ip
expect
"*assword:" }
expect
"*~]$*
" expect
"*~]$*
" expect
"(current)*password:
" expect
"new password:
" expect
"retype*password:
" expect
"*~]$*
" expect eof
eofdone
< /home/mina.xiang/serverip.txt
最近做得稍微複雜一點的,普通使用者解除安裝軟碟機floppy模組,普通使用者許可權不夠時需要通過sudo執行。
#!/bin/bashremove-floppyusr_passwd='
passwd
'while
read ip
do /usr/bin/expect <
set timeout -1
spawn
ssh -t mina.xiang@$ip
expect
"*assword:" }
expect
"*~]$*
" expect
"*~]$*
" expect
"*~]$*
" expect
"*~]$*
" expect
"\[sudo\]*mina.xiang:
" expect
"*~]$*
" expect
"*~]$*
" expect
"*~]$*
" expect
"*~]$*
" expect
"*~]$*
" expect
"*~]$*
" expect
"*~]$*
" expect
"*~]$*
" expect
"*~]$*
" expect
"*~]$*
" expect
"*~]$*
" expect eof
eofdone
< /home/mina.xiang/serverip.txt
--永久解除安裝floppy流程
--指令碼中呼叫得serverip.txt檔案內存放目標機器ip位址,每行乙個ip
進入expect環境後主要使用的內部命令有三個
建立乙個新程序,並執行給定的程式,它的主要功能是給執行程序加個殼,用來傳遞互動指令,expect可以通過spawn監聽程序的輸出。
此expect非彼expect,它是expect的內部命令,在expect環境中使用,它用來匹配spawn中程序輸出,匹配上了就執行後面的body部分。
用於執行互動動作,改密碼時可以send密碼,與手工輸入密碼的動作等效。
expect內部命令會等待目標程序的輸出,等待時間預設10秒,沒有得到期望值且等待超時後執行下一條命令,也可通過"set timeout number"手動設定時長,「set timeout -1」為永不超時。
expect eof是在等待結束標誌。由spawn啟動的命令在結束時會產生乙個eof標記,expect eof即在等待這個標記.
自動化部署工具
1.puppet puppet是開源的基於ruby的系統配置管理工具,基於c s的部署架構。是乙個為實現資料中心自動化管理而設計的配置管理軟體,它使用跨平台語言規範,管理配置檔案 使用者 軟體包 系統服務等。客戶端預設每隔半小時會和伺服器通訊一次,確認是否有更新。當然也可以配置主動觸發來強制客戶端更...
linux自動化互動工具expect簡單配置使用
1 掛載 mount t iso9660 o loop dev cdrom mnt cd 2 查詢expect安裝包 yum list grep expect 3 安裝 yum install expect.i686 y 4 新建並編輯expect配置檔案vi expectdemo.sh 配置內容如...
自動化運維工具 ansible系列命令
列出所有已安裝的galaxy ansible galaxy list 安裝galaxy ansible galaxy install geerlingguy.redis 刪除galaxy 推送命令至遠端,效率無線提公升,對運維要求較高管理加密解密yml檔案ansible vault create d...