我們常常會用到腳本執行一些自動化的計劃,但是有許多命令都需要進行輸入回饋比如scp和ssh,小夥伴們是不是也煩惱過這些問題,機器上沒有裝過ftp,想寫個腳本scp個文件但是要輸入密碼,能不能讓linux幫我們輸密碼呢?
看完本篇文章這些煩惱将煙消雲散!
expect是一個自動化交互套件,主要應用于執行命令和程序時,系統以交互形式要求輸入指定字符串,實現交互通信。
首先查看是否linux系統已安裝所需要的包
rpm -qa |grep expect
介紹一下expect主要的用法(用scp和ssh為例)
expect <<EOF--表示接下來的語句作為expect命令的子語句進行,也可以單獨把腳本定義為expect腳本來進行,但是這樣就無法在這個腳本裡執行sh或bash語法的shell腳本了,如:
spawn ----- 後面跟要執行的命令或者程序
expect{
} ----- 是expect的主程序内部命令
"yes/no" { send "yes\r";exp_continue;}----- 前面是識别控制台輸出的命令,識别到yes/no, 後面是接下來執行的命令,當識别到控制台輸出yes/no,發送yes和回車\r代表回車,exp_continue代表在該項匹配之後還能繼續進行匹配。
"password" { send "oracle\r" } ----- 同理。
expect eof ----- 代表expect程序執行結束
EOF ----- 代表子語句執行結束
set timeout xx ----- 代表超時時間,如果不設置默認10S 這樣scp的時候有可能導緻傳輸中斷。
如上圖,可以看到借助這個套件成功免密碼傳輸scp到别的機器。
再試試ssh?然後做個導入試試。
ssh到另一個機器成功!
已經開始導入!
結論:通過expect可以完成更多的自動計劃,将腳本布在crontab下,甚至隻要在一台機器上就可以完成對多台機器的維護計劃,可以開始為所欲為了!
美創運維中心數據庫服務團隊擁有Oracle ACE 1人、OCM 10餘人、數十名Oracle OCP、MySQL OCP、紅帽RHCA、中間件weblogic、tuxedo認證、達夢工程師 ,著有《Oracle DBA實戰攻略》,《Oracle數據庫性能優化方法和最佳實踐》,《Oracle内核技術揭秘》等多本數據運維優化書籍。目前運維各類數據庫合計2000餘套,精通Oracle、MySQL、SQLServer、DB2、PostgreSQL、達夢等主流商業和開源數據庫。并成為首批國内達夢戰略合作夥伴之一,擁有海量經驗和完善的人員培養體系。并同時提供超融合,私有雲整體解決方案。
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!