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" line 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 回答