【问题标题】:send error while running expect code运行期望代码时发送错误
【发布时间】:2012-11-06 11:01:12
【问题描述】:

我做了一个期望代码:

#!/usr/bin/expect -f
生成 ls
期待“*]$*”
发送“cd /to/some/path\n”
期待“*]$*”
发送“sudo -u root ./program.sh”
期待“*:*”
发送“i_am_password\n”
互动

在执行时出现以下错误:

生成 ls
my_pgm.exp abc.sh axyz.zip all.zip test.exp
发送:生成 id exp6 未打开
执行时
"发送 "cd /to/some/path\n""
(文件“./my_pgm.exp”第 5 行)

我在 ubuntu 上运行这段代码。请帮忙。

【问题讨论】:

  • 不要这样做!太可怕了!
  • 您应该做的是更新/etc/sudoers 以允许您无需输入密码即可sudo program.sh。原则上,切勿将密码硬编码在文本文件中。

标签: linux bash expect


【解决方案1】:

我不确定你为什么需要 expect,但是对于 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 指令指示 expect 哪个 程序将用于交互。所以如果你想要与 bash 交互,你必须问expectto spawn bash-i 参数用于 bash 强制它们以 interactive 模式启动。

确实,这看起来是个非常糟糕的主意,但这只是我的看法;)

【讨论】:

  • @gniourf_gniourf:谢谢! ;-) 很高兴看到:我不是一个人这么认为。 :->>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-28
  • 2012-09-07
相关资源
最近更新 更多