一、故障现象
采用./sh脚本方式可以正常执行脚本;
但是采用sh 脚本方式无法执行,执行出错。
[root@host-192-168-66-18 backup]# sh 3.sh
3.sh:行7: log_file:未找到命令
3.sh:行13: spawn:未找到命令
couldn't read file "Password:": no such file or directory
3.sh:行16: send:未找到命令
couldn't read file "eof": no such file or directory
二、问题排查
错误提示显示Expect脚本中的命令未找到,可能是因为Expect工具未正确安装或脚本中的路径问题。请按照以下步骤来解决问题:
确保Expect已安装: 首先确保Expect工具已在你的系统上安装。可以尝试在终端中运行
expect
命令来查看是否可以启动Expect shell。确认Expect脚本路径: 确保在脚本的第一行中正确指定了Expect的路径。通常,Expect工具的二进制文件位于
/usr/bin/expect
。确保脚本的第一行是#!/usr/bin/expect
。whereis expect
[root@host-192-168-66-18 backup]# whereis expect
expect: /usr/bin/expect
三、问题解决
问题在于脚本使用了#!/usr/bin/expect
来指定解释器,适用于直接执行脚本文件。
如果使用sh 3.sh
来运行脚本时,解释器将是/bin/sh
而不是Expect。
[root@host-192-168-66-18 backup]# crontab -l
* * * * * /bin/expect /data/backup/backupall.sh
/bin/expect /data/backup/backupall.sh