読者です 読者をやめる 読者になる 読者になる

expectコマンド備忘録

会社の環境整備時にexpectコマンドを使っている箇所があり、興味を持ったため試しに使ってみました。

expectコマンドとは

コマンドの返答を識別して、次の入力を自動で行うコマンドです。 例えば、passwdを実行すると

  1. パスワードを入力してください
  2. 新しいパスワードを入力してください

といった返答が返ってきますが、この返答を自動で入力できるのが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
"