動作環境
- macOS High Sierra 10.13.6
- iterm2 Build 3.2.8
expect is 何?
expectはコマンド内で発生する対話形式の入力を自動化できるコマンド。
つまり、sshなどでpasswordやyes/noの入力が必要になったときに自動的に入力してくれるチョー便利なやつ。
使い方
$ expect -c "
spawn [自動化したいコマンド]
expect [表示される返答]
send [返答で入力する文字]
interact または expect eof
"
実行例
PW="hogehoge"
expect -c "
set timeout 120
spawn jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore /hoge/fuga/keystore hogehoge.apk RELEASEKEY
expect \"パスワードを入力してください:\"
send -- \"${PW}\n\"
expect eof
"
使用する際の注意事項
expect
とsend
で使用する文字列は""
で囲むため\
でエスケープさせる。
interact
は自動で入力されるが、実行はされないため、ターミナルから実行する場合はこちらを使用する。
expect
は自動で入力後、次のコマンドまで自動で実行されるため、cronやjenkinsから実行する場合はこちらを使用する。
expect
のデフォルトタイムアウトは10秒のため、10秒を超える処理を行う場合はうまく動かないため、set timeout
で設定を行う