溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

linux中的expect命令怎么用

發(fā)布時(shí)間:2022-01-21 10:53:55 來源:億速云 閱讀:167 作者:kk 欄目:開發(fā)技術(shù)

本篇文章為大家展示了linux中的expect命令怎么用,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

expect介紹

expect 是由Don Libes基于Tcl(Tool Command Language )語言開發(fā)的,主要應(yīng)用于自動(dòng)化交互式操作的場(chǎng)景,借助Expect處理交互的命令,可以將交互過程如:ssh登錄,ftp登錄等寫在一個(gè)腳本上,使之自動(dòng)化完成。尤其適用于需要對(duì)多臺(tái)服務(wù)器執(zhí)行相同操作的環(huán)境中,可以大大提高系統(tǒng)管理人員的工作效率

expect命令

expect語法:

expect [選項(xiàng)][ -c cmds] [ [ -[f|b] ] cmdfile] [ args]

選項(xiàng)

-c:從命令行執(zhí)行expect腳本,默認(rèn)expect是交互地執(zhí)行的

示例:

expect -c 'expect "\n" {send"pressed enter\n"}

-d:可以輸出輸出調(diào)試信息

示例:

expect -d ssh.exp

expect中相關(guān)命令

spawn:?jiǎn)?dòng)新的進(jìn)程
send:用于向進(jìn)程發(fā)送字符串
expect:從進(jìn)程接收字符串
interact:允許用戶交互
exp_continue匹配多個(gè)字符串在執(zhí)行動(dòng)作后加此命令

except最常用的語法(tcl語言:模式–動(dòng)作)

單一分支模式語法:

expect “hi” {send “You said hi\n"}

匹配到hi后,會(huì)輸出“you said hi”,并換行

多分支模式語法:

expect"hi" { send "You said hi\n" } \

"hehe"{ send “Hehe yourself\n" } \

"bye"{ send “Good bye\n" }

匹配hi,hello,bye任意字符串時(shí),執(zhí)行相應(yīng)輸出。等同如下:

expect {

"hi"{ send "You said hi\n"}

"hehe"{ send "Hehe yourself\n"}

"bye"{ send “Good bye\n"}

}

示例

cat ssh2.exp

#!/usr/bin/expect

spawn ssh 192.168.8.100

expect {

"yes/no" { send"yes\n";exp_continue }

"password" { send“magedu\n" }

}

interact

#expect eof

示例:變量

cat ssh3.exp

#!/usr/bin/expect

set ip 192.168.8.100

set user root

set password magedu

set timeout 10

spawn ssh $user@$ip

expect {

"yes/no" { send"yes\n";exp_continue }

"password" { send"$password\n" }

}

interact

示例:位置參數(shù)

vim ssh4.exp

#!/usr/bin/expect

set ip [lindex $argv 0]

set user [lindex $argv 1]

set password [lindex $argv 2]

spawn ssh $user@$ip

expect {

"yes/no" { send"yes\n";exp_continue }

"password" { send"$password\n" }

}

interact

#./ssh4.exp 192.168.8.100 rootmagedu

示例:執(zhí)行多個(gè)命令

cat ssh5.exp

#!/usr/bin/expect

set ip [lindex $argv 0]

set user [lindex $argv 1]

set password [lindex $argv 2]

set timeout 10

spawn ssh $user@$ip

expect {

"yes/no" { send"yes\n";exp_continue }

"password" { send"$password\n" }

}

expect "]#" { send"useradd haha\n" }

expect "]#" { send"echo magedu |passwd –stdin haha\n" }

send "exit\n"

expect eof

#./ssh5.exp 192.168.8.100 rootmagedu

示例:shell腳本調(diào)用expect

vim ssh6.sh

#!/bin/bash

ip=$1

user=$2

password=$3

expect

set timeout 10

spawn ssh$user@$ip

expect {

"yes/no" { send"yes\n";exp_continue}

"password" { send"$password\n" }

}

expect "]#" { send"useraddhehe\n" }

expect "]#" { send "echomagedu|passwd–stdinhehe\n" }

expect "]#" { send"exit\n" }

expect eof

EOF

#./ssh6.sh 192.168.8.100 rootmagedus

什么是Linux系統(tǒng)

Linux是一種免費(fèi)使用和自由傳播的類UNIX操作系統(tǒng),是一個(gè)基于POSIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng),使用Linux能運(yùn)行主要的Unix工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。

上述內(nèi)容就是linux中的expect命令怎么用,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI