一、故障现象
采用./sh脚本方式可以正常执行脚本;
但是采用sh 脚本方式无法执行,执行出错。
[root@host-192-168-66-18 backup]# sh 3.sh3.sh:行7: log_file:未找到命令3.sh:行13: spawn:未找到命令couldn't read file "Password:": no such file or directory3.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 expectexpect: /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

