アプリ版:「スタンプのみでお礼する」機能のリリースについて

手動で次のようなコマンドを入力して行っていたバックアップを「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'を入力
#

A 回答 (2件)

expect を使う必要のある部分は


set owner/mode for '.'? [yn] y <---'y'を入力
の y を入力するところだけですね。

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

この回答への補足

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

補足日時:2010/02/23 09:18
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/03/09 10:47

> うまくいきません。




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

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

この回答への補足

返事が遅くなりすみません。
「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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!