Bash + Expect脚本在cron RHEL 7中不起作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bash + Expect脚本在cron RHEL 7中不起作用相关的知识,希望对你有一定的参考价值。

我有以下脚本,该脚本在终端中运行,但在crontab中不起作用。为什么它不在cron中运行

注意:/opt/app/bin/app.exe具有CLI

#!/bin/bash
PATH=/opt/app/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/myuser/.local/bin:/home/myuser/bin:/home/myuser/scripts

ip=10.12.13.4
file=filename

function filestats(){
        /usr/bin/expect - $1 $2 << 'EOF' | awk  '/^second line/ { print $5 }'
set ip [lindex $argv 0]
set file [lindex $argv 1]

set timeout 60

spawn /opt/app/bin/app.exe 127.0.0.1 $ip 1112

expect {
        "CLI# > " { send "addip $file
" }
}

sleep 3
expect {
        "CLI# > " { send "quit
" }
}
EOF
}
filestats ${ip} ${file}
答案

EOF并没有真正退出循环。我将其固定在EOF上方的expect eof,从而解决了该问题。我仅在RHEL 7中注意到了此问题,而在RHEL 6中则没有注意到]

以上是关于Bash + Expect脚本在cron RHEL 7中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在bash shell脚本中使用expect

bash/expect/loop - 如何循环执行 telnet 的简单 bash 脚本

在 bash 脚本中为 ssh 命令提供密码,无需使用公钥和 Expect

无法在 bash 脚本期望中发送长命令

Bash:- expect远程执行shell脚本交互

linux/unix系统间文备份脚本