我做了一个期望代码:
#!/usr/bin/expect -f
生成 ls
期望"*]$*"
发送"cd/to/some/path"
期望"*]$*"
发送"sudo -u root ./program.sh"
期待"*:*"
发送"i_am_password"
互动
执行它时,我收到以下错误:
生成 ls
my_pgm.exp abc.sh axyz.zip all.zip test.exp
发送:生成 ID exp6 未打开
执行
时"发送"cd/to/some/path"
(文件 "./my_pgm.exp" 第 5 行)
我在 ubuntu 上运行此代码。请帮忙。
我不确定你为什么需要期望,但对于 bash 脚本,试试这个:
#!/usr/bin/expect -f
spawn bash -i
expect "*$ "
send "cd /to/some/pathn"
expect "*$ "
send "sudo -u root ./program.shn"
expect "*: "
send "i_am_passwordn"
interact
描述
spawn
指令指示预期要使用哪个程序进行交互。所以如果你想和bash互动,你必须要求expect
spawn bash
。用于 bash 的-i
参数强制它们以交互模式启动。
总的来说,这看起来是一个非常糟糕的主意,但这只是我的意见;)