Open10
expect
サンプルに応答があるshを作成
#!/bin/sh
read -p "ok? (y/N): " yn
case "$yn" in [yY]*) ;; *) echo "abort." ; exit ;; esac
echo "tudukimadekita"
expect説明しているQiita記事
expect説明2
#!/usr/bin/sh
expect -c "
spawn sh ./target-sample.sh
send \"Y\n\"
expect
"
ただexpect試すだけ。無条件にYを送る
条件をつけてその応答要求がきたら返す。
#!/usr/bin/sh
expect -c "
spawn sh ./target-sample.sh
expect \"ok? (y/N)\"
send \"Y\n\"
expect
"
応答が2回必要なshにする。
#!/bin/sh
read -p "ok? (y/N): " yn
case "$yn" in [yY]*) ;; *) echo "abort." ; exit ;; esac
echo "tudukimadekita"
read -p "ok2? (y/N): " yn
case "$yn" in [yY]*) ;; *) echo "abort." ; exit ;; esac
echo "tudukimadekita2"
timeoutをセットしなくてもデフォルトがあるらしいタイムアウトする。
#!/usr/bin/sh
expect -c "
spawn sh ./target-sample.sh
send \"Y\n\"
send \"Y\n\"
expect
"
sendだけ入れると先行入力している?
sh expect-sample.sh
spawn sh ./target-sample.sh
Y
Y
ok? (y/N): tudukimadekita
ok? (y/N): tudukimadekita2
→おそらく先行入力であっている。
応答する条件を指定
#!/usr/bin/sh
expect -c "
spawn sh ./target-sample.sh
expect \"ok? (y/N)\"
send \"Y\n\"
expect \"ok? (y/N)\"
send \"Y\n\"
expect
"
sh expect-sample.sh
spawn sh ./target-sample.sh
ok? (y/N): Y
tudukimadekita
ok? (y/N): Y
tudukimadekita2
apt install -y wkhtmltopdfの応答メモ(これの為にexpect使っているので)
The layout of keyboards varies per country, with some countries having multiple common layouts. Please select the country of origin for the keyboard of this
computer.
[More]
→55
(Japanese)
Country of origin for the keyboard:
→55
(Japanese)
Please select the layout matching the keyboard for this machine.
Keyboard layout:
→ 1
(Japanese)
失敗例
#!/usr/bin/sh
expect -c "
set timeout 300000
spawn apt-get install -y wkhtmltopdf
expect \"\[More\]\"
send \"55\n\"
expect \"Country of origin for the keyboard:\"
send \"55\n\"
expect \"\Keyboard layout:\"
send \"1\n\"
expect
"
反応しなかった