会社の環境整備時にexpectコマンドを使っている箇所があり、興味を持ったため試しに使ってみました。
expectコマンドとは
コマンドの返答を識別して、次の入力を自動で行うコマンドです。
例えば、passwd
を実行すると
- パスワードを入力してください
- 新しいパスワードを入力してください
といった返答が返ってきますが、この返答を自動で入力できるのがexpectコマンドです。
以下に使用例を記載します。
expect -c " spawn [実行したいコマンド] expect [コマンドの返答] send -- [次のコマンド] "
以下にsu
コマンドを使用した例を記載します。 このスクリプトを実行すると、ユーザーが切り替わります。
#!/bin/sh expect -c " set timeout 20 set user [lindex $argv 0] set password [lindex $argv 1] spawn su $user expect \"Password:\" send \"$password\r\"; interact "