- PR -

制御端末がない場合のexpectについて

1
投稿者投稿内容
未記入
会議室デビュー日: 2008/10/14
投稿数: 1
投稿日時: 2008-10-14 22:11
とある処理の一部を他のユーザーで実行したいという要件がありまして、
expectからsuしてパスワードを入力するというスクリプトを作成しました。

そのままそのスクリプトを実行すると思い通りの動作をするのですが、
nohupを使ってバックグラウンド処理にすると
パスワード:
は出るのですが、そこに入力されないで終了するという現象が起きております。

恐らく制御端末がないことが原因だとおもいます。
以下URLの件と同じ現象だと思われますが、参考にしてみましたが
解決しませんでした。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=22867&forum=10

アドバイスなど頂けたらと思います。
宜しくお願い致します。


=====以下スクリプト=====

#!/bin/bash


expect -c "
spawn su - ID

expect \\":\\"
send \\"PASSWORD\\r\\"

expect \\"$\\"
send \\"id\\r\\"

expect \\"$\\"

interact
"

=====以下成功時のログ=====

$ ./script.sh
spawn su - ID
パスワード:
id
exit
$ id
IDコマンドの結果
$ exit
logout
$
=====以下失敗時のログ=====

$ nohup ./script.sh

spawn su - ID
パスワード:
id
exit
1

スキルアップ/キャリアアップ(JOB@IT)