當前位置:首頁 » 編程軟體 » linuxexpect執行腳本

linuxexpect執行腳本

發布時間: 2023-01-06 23:54:55

linux shell腳本嵌入一段expect

expect -c 用全路徑?比如 /usr/bin/expect -c

㈡ Linux操作系統中expect如何使用

在Linux系統中,expect是一個自動化交互套件,也是一個用來處理交互的命令;利用expect,我們可以將交互過程寫在一個腳本上,讓其自動化完成,從而幫助運維人員提高工作效率、節約時間。那麼Linux系統中expect該如何使用?我們來看看詳細的內容介紹。

Linux系統中expect該如何使用?

expect是一個自動化交互套件,主要應用於執行命令和程序時,系統以交互形式要求輸入指定字元串,實現交互通信。

expect自動交互流程:

spawn啟動指定進程--expect獲取指定關鍵字--send向指定程序發送指定字元--執行完成退出。

注意:該腳本能夠執行的前提條件是安裝了expect

yum install -y expect

expect常用命令總結:

spawn 交互程序開始後面跟命令或者指定程序;

expect 獲取匹配信息匹配成功則執行expect後面的程序動作;

send exp_send 用於發送指定的字元串信息;

exp_continue 在expect中多次匹配就需要用到;

exit 退出expect腳本;

eof expect 執行結束 退出;

set 定義變數;

puts 輸出變數;

set timeout 設置超時時間。

㈢ linux:關於expect腳本,為什麼這么寫不對呢求解

mkdir又不是expect的命令。


#!/usr/local/bin/expect
spawnsu-root
expect"Password:"
send"123456 "
sleep3
send"mkdir/usr/local/ddddd "

㈣ 用expect實現telnet登陸到linux系統後,再執行一個shell腳本,待這個shell腳

參考一種類自然語言的腳本語言:

001 var {v_time} value datetime

002 screen.text at point {10} {30} string {2. telnet ipv4 (192.168.186.132:23) test , datetime: ~v_time~}

003

004 telnet.connect ip {192.168.186.132} port {23}

005 telnet.recv expect {Username:}

006 telnet.send {cisco%0a}

007 telnet.recv expect {Password}

008

009 telnet.send {cisco%0a}

010 telnet.recv expect {>}

011 telnet.send {enable%0a}

012 telnet.set onrecv {More} send { }

013 telnet.set delay {200} ms after per byte send

014 telnet.send {show version%0a}

015 telnet.recv for {5} seconds

016

017 telnet.send {show run%0a}

018 telnet.recv for {5} seconds

019 telnet.send {exit%0a}

020 telnet.close

021

022 var {v_time} value datetime

023 screen.text at point {10} {60} string {telnet tested end. datetime:~v_time~}

024

025 run.end

--------------------------------------------------------------------

簡單網路管理語言(Simple Network Management Language)是一種類自然語言的腳本語言,它採用snmp、telnet、ping、dns、arp、ssh、tcp、udp、web等協議訪問網路設備,內置smtp協議用於告警等郵件的發送,支持excel、mysql、sqlite等3種方式進行網管數據的存取。
最新版本: snml8.13(ladybird20200205) utf8&ipv6
項目託管地址:https://github.com/ladybirdSnml/snmlipv6utf8snmptelnetsshweb
打包下載:https://ladybirdsnml.github.io/snmlipv6utf8snmptelnetsshweb/snml_utf8ipv6.zip

㈤ linux expect講解怎麼使用

[root@zuozhang PYTHON_TEST]# rpm -ql expect package expect is not installed 查看是否有安裝,如果沒有安裝安裝一個即可。 yum install expect*

㈥ Linux自動登陸expect 遠程主機執行本地腳本

兩台ssh之間做個密鑰,盡量不要使用expect寫腳本。因為expect互動式登錄是需要你在腳本中寫密碼的。

㈦ linux下expect腳本問題

#!/usr/bin/expect-f

if{$argc!=1}{
puts"usage:$argv0IP"
exit1
}else{
setIP[lindex$argv0]
}

setpingcmd[format"ping-c100%s"$IP]

settimeout6000

#比如遠程用戶叫做test
setdestusertest
#比如遠程伺服器IP為如下
setdestip192.168.0.123
setdestpath"$destuser@$destip"
#比如用戶密碼叫做test
setdestpasswordtest

#ssh登錄
spawnssh$destpath

#######################
expect{
-re".*yes/no.*"{
exp_send"yes "
exp_continue
}
-re".*assword.*"{
exp_send"$destpassword "
}
}

#比如ssh登錄以後的提示符是test@Testserver>
expect{
-re".*test@Testserver.*"{
exp_send"$pingcmd "
}
}

expect{
#如果輸出timeout字元,則Control+C結束pingcmd
#這里用的是DestinationHostUnreachabl替換timeout。因為本人機器上沒有timeout.
-re".*DestinationHostUnreachabl.*"{
#輸入Control+c
exp_send"03"

#Control+c後必然輸出登錄提示符,再輸入期望執行的命令
expect{
-re".*test@Testserver.*"{
#假設希望執行的命令是ls
exp_send"ls "
}
}

#執行完ls之後退出
expect{
-re".*test@Testserver.*"{
exp_send"exit "
}
}
}

#如果沒有輸出timeout字元,退出。
-re".*test@Testserver.*"{
exp_send"exit "
}
}

interact

㈧ 關於linux expect腳本的問題,自動輸入密碼

#!/usr/bin/expect

set time 30
set passwd xxxxx (xxxx是你的密碼內容)

spawn sudo
expect "Password:" 引號里是你手動執行sudo時候 。系統返回給你的提示,可以只匹配最後幾個字母,
也可以寫全
send "$passwd\r"
expect eof

EOF

㈨ Linux expect

expect:expect是Unix系統中用來進行自動化控制和測試的腳本工具,常用於實現互動式任務的自動化。使用命令」dnf install expect -y」進行安裝。腳本文件聲明為」#!/usr/bin/expect」。

expect常用命令如下:

1.spawn+交互命令(如spawn ssh [email protected]):」spawn」是expect的初始命令,用於啟動一個新的交互進程,之後所有的操作都會在這個進程中進行。

2.set:定義變數/為變數賦值。使用語法:set 變數名 值。

3.puts:將變數值/字元串定向到本地標准輸出文件(即定位到屏幕)。使用語法:puts 「字元串/$變數名」

4.send_user:作用和使用方法類似於」puts」,區別在於」puts」會在輸出內容的結尾自動追加一個換行符,而」send_user」不會。

5.send:向交互進程發送信息/命令(字元串和一些特殊符號,\r—回車,\n—換行,\t—製表符)。使用語法:send 「信息/命令[\r]」。

6.[lindex $argv 數字]:表示外部傳遞參數的值,數字是n,就表示第n-1個參數。註:$argc表示外部傳遞參數的個數,也是一個值。

7.expect+字元串+{ 命令 }:將字元串與交換進程接收到的信息進行匹配。如果匹配成功(字元串是交換進程接收到的信息的一部分),執行包含在」{}」中的命令;如果匹配失敗,不執行包含在」{}」中的命令。該命令有三種使用方法:

第一種:單分支模式

①expect 字元串 { 命令 }

解釋:如果字元串與交換進程接收到的信息匹配成功,執行包含在」{}」中的命令,並結束該expect命令;如果字元串與交換進程接收到的信息匹配失敗,timeout秒後結束該expect命令。(註:腳本執行到expect命令時,計時器就開始計時,並會在計時器超時前不斷對交換進程接收到的信息進行掃描,嘗試字元串與信息的匹配。)

②expect {

字元串{ 命令 }

timeout { 命令 }

}

解釋:如果字元串與交換進程接收到的信息匹配成功,執行包含在」{}」中的命令,並結束該expect命令;如果字元串與交換進程接收到的信息匹配失敗,timeout秒後執行包含在」{}」中的命令,之後結束該expect命令。(註:腳本執行到expect命令時,計時器就開始計時,並會在計時器超時前不斷對交換進程接收到的信息進行掃描,嘗試字元串與信息的匹配。)

第二種:多分支模式

①expect {

字元串1 { 命令 }

字元串2 { 命令 }

}

解釋:如果字元串1與交換進程接收到的信息匹配成功,執行執行包含在」{}」中的命令,並結束該expect命令;如果字元串1與交換進程接收到的信息匹配失敗、字元串2與交換進程接收到的信息匹配成功,執行包含在」{}」中的命令,並結束該expect命令;如果字元串1、字元串2皆與交換進程接收到的信息匹配失敗,timeout秒後結束該expect命令。(註:腳本執行到expect命令時,計時器就開始計時,並會在計時器超時前不斷對交換進程接收到的信息進行掃描,嘗試字元串與信息的匹配。)

②expect {

字元串1 { 命令 }

字元串2 { 命令 }

timeout { 命令 }

}

解釋:如果字元串1與交換進程接收到的信息匹配成功,執行執行包含在」{}」中的命令,並結束該expect命令;如果字元串1與交換進程接收到的信息匹配失敗、字元串2與交換進程接收到的信息匹配成功,執行執行包含在」{}」中的命令,並結束該expect命令;如果字元串1、字元串2皆與交換進程接收到的信息匹配失敗,timeout秒後執行包含在」{}」中的命令,之後結束該expect命令。(註:腳本執行到expect命令時,計時器就開始計時,並會在計時器超時前不斷對交換進程接收到的信息進行掃描,嘗試字元串與信息的匹配。)

第三種:循環多分支模式(註:exp_continue命令只能出現在expect命令的匹配語句中,執行到exp_continue命令時,腳本會跳出當前expect命令,並重新執行該expect命令,直到expect命令通過不包含exp_continue命令的匹配語句結束、或expect命令匹配超時結束。)

①expect {

字元串1 { 命令; exp_continue }

字元串2 { 命令 }

}

解釋:如果字元串1與交換進程接收到的信息匹配成功,執行執行包含在」{}」中的命令,並重新執行該expect命令;如果字元串1與交換進程接收到的信息匹配成功,執行執行包含在」{}」中的命令,並重新執行該expect命令...;如果字元串1與交換進程接收到的信息匹配失敗、字元串2與交換進程接收到的信息匹配成功,執行包含在」{}」中的命令,並結束該expect命令;如果字元串1、字元串2皆與交換進程接收到的信息匹配失敗,timeout秒後結束該expect命令。(註:腳本執行到expect命令時,計時器就開始計時,並會在計時器超時前不斷對交換進程接收到的信息進行掃描,嘗試字元串與信息的匹配。)

②expect {

字元串1 { 命令; exp_continue }

字元串2 { 命令 }

timeout { 命令 }

}

解釋:如果字元串1與交換進程接收到的信息匹配成功,執行執行包含在」{}」中的命令,並重新執行該expect命令;如果字元串1與交換進程接收到的信息匹配成功,執行執行包含在」{}」中的命令,並重新執行該expect命令...;如果字元串1與交換進程接收到的信息匹配失敗、字元串2與交換進程接收到的信息匹配成功,執行包含在」{}」中的命令,並結束該expect命令;如果字元串1、字元串2皆與交換進程接收到的信息匹配失敗,timeout秒後執行包含在」{}」中的命令,之後結束該expect命令。(註:腳本執行到expect命令時,計時器就開始計時,並會在計時器超時前不斷對交換進程接收到的信息進行掃描,嘗試字元串與信息的匹配。)

8.timeout:timeout是expect中的一個關鍵字變數,用於控制expect命令的超時時間。需要注意的是,這個超時時間針對於整個expect命令,而不是針對於expect命令中的某條匹配語句。也就是說,只有expect命令中所有匹配語句都匹配失敗後,才會開始計算超時時間。timeout變數值預設為10(秒),我們可以通過」set timeout=值」的方式為其重新賦值,作用范圍:本次賦值到下一次賦值間的所有expect命令。註:如果需要為timeout變數重新賦值,應在expect命令之外進行。

9.expect eof:該命令的作用是結束spawn交互進程,將命令行切回至運行腳本的主機(即從遠端伺服器登出)。

10.interact:預設情況下,expect腳本執行完畢後會自動從遠端伺服器登出(即便沒有顯式地執行」expect eof」命令)。使用interact命令後,expect腳本執行完畢會繼續保持當前狀態,並將控制權移交給用戶。

11.exit:結束該腳本。

expect中的if語句:

if { 條件表達式 } {

命令

}

if { 條件表達式 } {

命令

} else {

命令

}

expect中的while語句:

while { 條件表達式 } {

命令

}

expect中的for語句:

for { set i 1 } { $i <=10 } { incr i } {

命令

}

incr變數名 步長   ——變數自增

incr 變數名 -步長    ——變數自減

數學運算需使用let、expr等工具

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:593
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:888
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:581
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:765
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:684
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1012
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:255
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:113
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:806
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:712