這篇文章給大家介紹shell腳本中免交互工具ecpect是怎樣用的,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
萊州網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,萊州網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為萊州超過千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的萊州做網(wǎng)站的公司定做!
Expect概述
Expect是建立在tcl基礎(chǔ)上的一個工具,Expect是用來進(jìn)行自動化控制和測試的工具。主要解決shell腳本中不可交互的問題。對于大規(guī)模的Linux運(yùn)維很有幫助。
在Linux運(yùn)維和開發(fā)中,我們經(jīng)常需要遠(yuǎn)程登錄服務(wù)器進(jìn)行操作,登錄的過程是一個交互的過程,可能需要輸入yes/no、password等信息。為了模擬這種輸入,可以使用Expect腳本。
Expect安裝
yum install expect -y 安裝expect服務(wù)
Expect基本命令
1.send:向進(jìn)程發(fā)送字符串,用于模擬用戶的輸入
該命令不能自動回車換行,一般要加\r (回車)
2.expect
expect的一個內(nèi)部命令,判斷上次輸出的結(jié)果里是否包含指定的字符串,如果有則立即返回,否則就等待超時時間后返回。
只能捕捉spawn啟動的進(jìn)程的輸出。
3.spawn:啟動進(jìn)程,并跟蹤后續(xù)交互信息。
4.interact:執(zhí)行完成后保持交互狀態(tài),把控制權(quán)交給控制臺
5.Timeout:指定超時時間,過去則繼續(xù)執(zhí)行后續(xù)指令
單位是:秒
timeout -1 為永不超時
默認(rèn)情況下,timeout是10秒
6.exp_continue
允許expect繼續(xù)向下執(zhí)行
7.send_user
回顯命令,相當(dāng)于echo
8.$argv 參數(shù)數(shù)組
expect腳本可以接受從bash傳遞的參數(shù),可以使用【lindex,$argv n】獲得,n從0開始,分別表示第一個、第二個。。。
9.Expect腳本必須以interact或expect eof結(jié)束,執(zhí)行自動化任務(wù)通常expect eof就夠了
expect eof 是在等待結(jié)束標(biāo)志,由spawn啟動的命令在結(jié)束時會產(chǎn)生一個eof標(biāo)記,expect eof就是在等待這個標(biāo)記。
Expect語法
單一語法分支
expect “password” {send “mypassword”;}
多分支語法結(jié)構(gòu)
expect { "aaa"{send "AAA\r"} "bbb"{send "BBB\r"} "ccc"{send "CCC\r"} }
示例:
1.利用expect 完成ssh登錄過程
(1)直接執(zhí)行
#!/usr/bin/expect set timeout 60 #環(huán)境設(shè)置 log_flie test.log log_user 1 #變量定義 set hostname [lindex $argv 0] set password [lindex $argv 1] #啟動spawn spawn ssh root@$hostname #匹配條件 expect { "(yes/no)" {send "yes\r";exp_continue} "password" {send "$password\r"} } #權(quán)限轉(zhuǎn)交控制臺 interact
(2)嵌入執(zhí)行
#!/bin/bash hostname=$1 password=$2 /usr/bin/expect<<-EOF spwan ssh root@${hostname} expect{ "(yes/no)" {send "yes\r";exp_continue} "*password" {send "password\r"} } expect "*]#" send "exit\r" expect eof EOF
2.創(chuàng)建用戶tom,密碼tom123
#!/bin/bash user=$1 password=$2 useradd=$user expect<<-EOF spawn passwd $user expect { "New password:" send "${password}\r" "Retype new password:" send "${password}\r" } ecpect eof EOF
關(guān)于shell腳本中免交互工具ecpect是怎樣用的就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
當(dāng)前文章:shell腳本中免交互工具ecpect是怎樣用的
網(wǎng)站網(wǎng)址:http://jinyejixie.com/article16/pgeigg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、小程序開發(fā)、網(wǎng)站營銷、域名注冊、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)