Crontab没有运行期望脚本

时间:2016-06-21 13:55:54

标签: linux ubuntu

我有一个期望脚本,应该将文件上传到sftp服务器

期望脚本独立工作。 例如,当我运行

/home/john/bin/mytest.sh 

工作正常。

但是当我尝试将它与crontab一起使用时,它不起作用

TMP / crontab的

1  * * * * /usr/bin/expect -f /home/john/bin/mytest.sh

我的脚本

#!/usr/bin/expect 
spawn sftp  john@johncdq.com
expect "password:"
send “@user[as\n”
expect "sftp>"
send "cd batch/unp\n"
expect "sftp>"
send " put /home/john/newbin/NY010120120717.dat\n"
expect "sftp>"
send "exit\n"
expect eof
exit

2 个答案:

答案 0 :(得分:0)

首先,确保您启用了运行cron: https://help.ubuntu.com/community/CronHowto 请参阅启用用户级别Cron 部分

其次,尝试用“

”括起命令
1  * * * * "/usr/bin/expect -f /home/john/bin/mytest.sh"

或者更好的是,让一个 Expect脚本可执行文件作为一个独立的程序,你必须做两件事:
1-使脚本可执行 2-提供脚本的路径以获得期望。我系统上的路径是:/ usr / bin / expect;因此,使用前面的“shebang”(#!)输入脚本第一行的路径:

#!/usr/bin/expect -f

将cron作业更改为:

1  * * * * /home/john/bin/mytest.sh

答案 1 :(得分:0)

尝试从crontab行中删除expect解释器并将其写为(我通常用扩展名.exp命名我的期望脚本,我不知道它是否重要):

* * * * * /home/john/bin/mytest.sh

在脚本中有#!/ usr / bin / expect行,您不需要在命令行中再次编写它。此外,crontab中的第二个参数是运行脚本而不是解释器的用户的名称。我在第一个位置写了一个(*),因为我猜你想每分钟运行一次脚本,如果你写一个(1)你的脚本只会在每小时的第一分钟运行。我希望它可以提供帮助。