2

期待するコードを作成しました:

#!/usr/bin/expect -f
spawn ls
expect "*]$*"
send "cd /to/some/path\n"
expect "*]$*"
send "sudo -u root ./program.sh"
「*:*」を期待し
て「i_am_password\n」を
送信

実行中に以下のエラーが発生します。

spawn ls
my_pgm.exp abc.sh axyz.zip all.zip test.exp
send: spawn id exp6 not open
while execution
"send "cd /to/some/path\n""
(file "./my_pgm.exp" 行5)

このコードをubuntuで実行しています。助けてください。

4

1 に答える 1

1

なぜ期待する必要があるのか​​ よくわかりませんが、bashスクリプトの場合は、これを試してください:

#!/usr/bin/expect -f
spawn bash -i
expect "*$ "
send "cd /to/some/path\n"
expect "*$ "
send "sudo -u root ./program.sh\n"
expect "*: "
send "i_am_password\n"
interact

説明

spawnディレクティブ命令は、対話に使用されるプログラムを期待 します。そのため、bash とやり取りしたいexpect場合は、に依頼する必要がありますspawn bash。bash へのパラメーターは、それらを対話モード-iで開始するように強制します。

まったく、これは非常に悪い考えのように見えますが、それは私の意見にすぎません ;)

于 2012-11-18T09:02:59.010 に答える