Expect +在Expect脚本中更改目录

时间:2019-08-20 16:58:33

标签: linux bash shell tcl expect

我们创建以下简单的Expect脚本以运行Set ws = CreateObject("Wscript.Shell") ws.run "wsl -d ubuntu -u root /etc/init.d/ssh start", vbhide

期望脚本为:

netdata-installer.sh

关于#!/usr/bin/expect set timeout 20 send "cd /tmp/netdata\r" spawn "bash netdata-installer.sh" expect ">" { send "\r" } interact 的几句话:

要运行-netdata-installer.sh,我们需要从工作目录-netdata-installer.sh中运行它,这就是我期望使用以下命令的原因:

/tmp/netdata

然后在我使用的期望脚本中:(为了执行send "cd /tmp/netdata\r" ,通过这种方式我们开始进行netdata安装)

ENTER

直到现在,看来一切都很完美,但是当我们运行期望时,我们会得到:

expect ">" { send "\r" }

似乎期望脚本不会将工作目录更改为# ./exp.sh spawn bash netdata-installer.sh couldn't execute "bash netdata-installer.sh": no such file or directory while executing "spawn "bash netdata-installer.sh"" (file "./exp.sh" line 5) You have new mail in /var/spool/mail/root

那我在哪里错了?


我们进行手动安装的示例:

cd /tmp/netdata

参考-https://www.ostechnix.com/netdata-real-time-performance-monitoring-tool-linux/

备注-运行./netdata-installer.sh ^ |.-. .-. .-. .-. . netdata | '-' '-' '-' '-' real-time performance monitoring, done right! +----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+---> You are about to build and install netdata to your system. It will be installed at these locations: - the daemon at /usr/sbin/netdata - config files in /etc/netdata - web files in /usr/share/netdata - plugins in /usr/libexec/netdata - cache files in /var/cache/netdata - db files in /var/lib/netdata - log files in /var/log/netdata - pid file at /var/run/netdata.pid - logrotate file at /etc/logrotate.d/netdata This installer allows you to change the installation path. Press Control-C and run the same command with --help for help. Press ENTER to build and install netdata to your system > <--- in this point we need to ENTER 时我们只需要输入“ ENTER”,然后也许还有其他选项可以自动执行此安装?

3 个答案:

答案 0 :(得分:3)

我们成功按照以下方式(并非意料之外)自动完成了流程

cd /tmp/netdata
echo -ne '\n' |  bash netdata-installer.sh

答案 1 :(得分:2)

与其尝试构建一个可以读取文本并按下虚拟键的软件机器人,不如要求该程序以非交互方式进行安装:

cd /tmp/netdata && ./netdata-installer.sh --dont-wait

答案 2 :(得分:0)

您写:

spawn "bash netdata-installer.sh"

bash netdata-installer.sh作为单个值来运行,带有空格,然后找不到它。毫不奇怪。您应该将其作为几个参数传递:

spawn bash netdata-installer.sh