[tips] passwd

前々から対話型のプログラムをシェルで実行するにはどうすればいいのか気になってたのだけれども、expectを使えばいいということが分かった。 unix useful command . ここのサイトの情報はなかなか秀逸ですね

"passwd","ftp","telnet","tip" 等の対話形プログラムをシェルスクリプトやバックグラウンドで実行するにはどうすればよいの?

これらのプログラムは端末からの入力を要求します。このようなプログラムはシェルスクリプトを使って自動化することはできません。

そこで、'expect' というプログラムが、このようなプログラムを自動で実行するためのインターフェースを提供してくれます。以下は expect コマンドを使ってパスワードを入力する例です。

#! /usr/local/bin/expect -f
# 最初の引数がユーザー名、2番めがパスワード

set password [index $argv 2]
spawn passwd [index $argv 1]
expect "*password:"
send "$password\r"
expect "*password:"
send "$password\r"
expect eof