如何使用Expect从URL运行文件?

时间:2018-12-21 18:39:23

标签: bash shell wget 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-使用评估

#!/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

我尝试了是否使用转义字符

1 个答案:

答案 0 :(得分:1)

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