shell中Expect的程式互動

2021-06-27 13:37:00 字數 818 閱讀 3966

一般來說,我們在編寫shell指令碼時都是自動執行的,如果涉及到與使用者的交付,如遠端ssh終端輸入使用者名稱/密碼。有時我們需要編寫的指令碼自動執行,而不需要人工干預,選擇expect實現是乙個很好的方式。

來乙個簡單的例子:

hello.sh

#!/bin/sh

echo -n "what's your name?:"

read name

echo "hello $name!"

exit 0

單獨執行過程中需要在終端輸入使用者名稱,執行結果如下,中間需要使用者輸入名稱,指令碼才會繼續往下執行

執行截圖:

nfssrv:/opt/mytest # sh hello.sh 

what's your name?:

使用expect,編寫乙個應答指令碼autohello.sh,使hello.sh自動執行下去

autohello.sh

#!/bin/bash 

expect << end

spawn ./hello.sh

expect "name"

send "ssrs\n"

expect eof

exit

end

執行截圖:

nfssrv:/opt/mytest # sh autohello.sh 

spawn ./hello.sh

what's your name?:ssrs

hello ssrs!

expect和shell的互動

今天寫了個指令碼expect指令碼 本以為很簡單一件事 最後因為expect和shell的一些差別導致浪費了不少時間 特此記錄下 兩者互動時 expect中使用shell命令 注意 shell指令碼太常用了,省略 了shell書寫格式 兩者的變數賦值方式不同 expect中是 set variabl...

expect命令在shell指令碼中的應用

在shell程式設計中,經常會用到命令的互動,此時就需要在shell中巢狀expect命令 單獨使用expect語法參考該文。例1 test.sh中內容 bin sh echo begin echo 是shell語法 注意 例2 例3 可以連續多次使用 spawn 命令,即使沒有互動也可以用,當然沒...

expect常用方法shell

1.usr bin expect 告訴作業系統指令碼裡的 使用那乙個 shell 來執行。這裡的 expect 其實和 linux 下的 bash windows 下的 cmd 是一類東西。注意 這一行需要在指令碼的第一行,從而告知作業系統採用 expect 作為 shell 執行指令碼。注意 當使...