こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

コマンドの自動実行

手動で次のようなコマンドを入力して行っていたバックアップを「expect」を使って自動で行うようにしたいのですが、うまくいきません。どのようにすればよいか教えてください。

#cd /backup
#rm -r *
#dump 0uaf - / | restore xf -

DUMP: Date of this level 0 dump: Fri Feb 12 12:42:11 2010
DUMP: Dumping /dev/hda1 (/) to standard output
DUMP: Label: none
---- 省略 ----
DUMP: Average transfer rate: 1517 kB/s
DUMP: DUMP IS DONE
set owner/mode for '.'? [yn] y <---'y'を入力
#

投稿日時 - 2010-02-22 15:52:41

QNo.5697375

困ってます

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

expect を使う必要のある部分は
set owner/mode for '.'? [yn] y <---'y'を入力
の y を入力するところだけですね。

それだけでしたら
restore xof -
と restore コマンドに -o フラグをつけると聞いてこなくなる
ので expect を使う必要もなくなるのではないでしようか。

投稿日時 - 2010-02-22 20:52:38

補足

そのようなフラグがあるのですか?'y'を入力したことと同じことになるのですか?

投稿日時 - 2010-02-23 09:18:03

お礼

返事が大変遅くなりすみません。 -o フラグをつけるとうまくいきました。
ありがとうございました

投稿日時 - 2010-03-09 10:47:49

ANo.1

> うまくいきません。


 うまくいきません、 というのは、 本来どうあるべきが、

何が どうなっているのでしょうか?

投稿日時 - 2010-02-22 15:55:56

補足

返事が遅くなりすみません。
「expect」の使い方を試すために、あらかじめ次のようなスクリプトを書いてみました。
#!/usr/bin/expect -f
spawn cp /home/abcd/example /home/abcd/dummy
cd /home/abcd
spawn rm -i dummy
expect "dummy'?"
send "y\r"
interact

この場合は、dummyというファイルを作り、それを削除するという内容ですが、
spawn cp /home/hiro/example /home/hiro/dummy
spawn rm -i dummy
rm: remove 通常ファイル `dummy'? y

と表示して意図通り動きました。これをまねて、

#!/usr/bin/expect -f
cd /backup_root
spawn rm -r *
spawn dump 0uaf - / | restore xf -
expect "[yn]"
send "y\r"
interact

とすると

spawn rm -r *
spawn dump 0uaf - / | restore xf -
invalid command name "yn"
while executing
"yn"
invoked from within
"expect "[yn]""
(file "./hda_bk.sh" line 5)

と表示します。削除はされていませんし、バックアップもしていません。"expect"で検索していろろいろ調べているのですが、どうすればよいか全くわからない状態です。

投稿日時 - 2010-02-23 09:13:48

あなたにオススメの質問