expect

telnet とか ftp とかパスワードの入力が必要なコマンドをシェルスクリプトから実行する方法.こういう用途には,expect が便利.

たとえば passwd コマンドをシェルスクリプトから実行する場合は,こんな感じ

function setpasswd()
{
    USER=$1
    PASS=$2
expect -c "
set timeout 10
spawn /usr/bin/passwd $USER
expect *password: 
send  $PASS\r
expect *password:
send $PASS\r
expect eof
"
}

これで,

setpasswd  "hoge" "fugafuga"

でユーザ"hoge"のパスワードを"fugafuga"に設定できる.