如何使用 Expect 运行 来自 URL 的文件?

How to run a file from URL using Expect?

在期望脚本中,我想下载一个文件并执行它。到目前为止,我已经尝试过这些选项:

尝试 1 - 只需下载并执行

#!/usr/bin/expect -f

spawn wget mysite.com/file.sh
spawn /bin/sh file.sh

/bin/sh命令在文件下载完成前执行

尝试 2 - 将内容通过管道传输到可执行文件

#!/usr/bin/expect -f

spawn /bin/sh <(curl -s mysite.com/file.sh)

我收到这个错误:

/bin/sh: <(curl: No such file or directory
send: spawn id exp6 not open
while executing

我尝试了几种不同的转义字符

尝试 3 - 使用 eval

#!/usr/bin/expect -f

spawn eval "$(/bin/sh <\(curl -s mysite.com/file.sh\))"

这给出了这个错误:

couldn't execute "eval": no such file or directory
while executing

我试过使用和不使用转义字符

system <args> 将参数传递给 sh。因此可以在脚本执行后使用&&运算符来执行脚本。

#!/usr/bin/expect -f

system wget mysite.com/file.sh && ./file.sh

或者如果您根本不想保存脚本:

#!/usr/bin/expect -f

system curl mysite.com/file.sh | /bin/sh