expect + 在 expect 脚本中更改目录
expect + change directory in expect script
我们创建以下简单的 expect 脚本以 运行 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"
然后在我使用的expect脚本中:(为了执行ENTER
,这样我们就开始了netdata的安装)
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
expect 脚本似乎没有将工作目录更改为 cd /tmp/netdata
那我哪里错了?
手动安装示例:
./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
参考 - https://www.ostechnix.com/netdata-real-time-performance-monitoring-tool-linux/
备注 - 当 运行 宁 netdata
我们只需要提供 "ENTER" 那么也许还有其他选项可以自动安装?
你写:
spawn "bash netdata-installer.sh"
将bash netdata-installer.sh
作为单值取运行,与space, 然后就找不到了。不出所料。您应该将其作为几个参数传递:
spawn bash netdata-installer.sh
与其尝试构建一个可以读取文本和按下虚拟键的软件机器人,不如让程序以非交互方式安装:
cd /tmp/netdata && ./netdata-installer.sh --dont-wait
我们成功地通过以下方式自动化了该过程(不是通过 expect)
cd /tmp/netdata
echo -ne '\n' | bash netdata-installer.sh
我们创建以下简单的 expect 脚本以 运行 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"
然后在我使用的expect脚本中:(为了执行ENTER
,这样我们就开始了netdata的安装)
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
expect 脚本似乎没有将工作目录更改为 cd /tmp/netdata
那我哪里错了?
手动安装示例:
./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
参考 - https://www.ostechnix.com/netdata-real-time-performance-monitoring-tool-linux/
备注 - 当 运行 宁 netdata
我们只需要提供 "ENTER" 那么也许还有其他选项可以自动安装?
你写:
spawn "bash netdata-installer.sh"
将bash netdata-installer.sh
作为单值取运行,与space, 然后就找不到了。不出所料。您应该将其作为几个参数传递:
spawn bash netdata-installer.sh
与其尝试构建一个可以读取文本和按下虚拟键的软件机器人,不如让程序以非交互方式安装:
cd /tmp/netdata && ./netdata-installer.sh --dont-wait
我们成功地通过以下方式自动化了该过程(不是通过 expect)
cd /tmp/netdata
echo -ne '\n' | bash netdata-installer.sh