这里的文档不是在crontab的子shell中执行的



我有一个脚本,从提示符工作得很好,但不是从crontab。唯一被破坏的是在脚本的子shell中忽略的这里文档。脚本使用psftp。下面是代码:

/home/批/myscript.sh:

(
cd /home/downloaded/csv/
psftp -pw passw0rd -P 1234 user@someftp.com << EOF
cd outgoing
mget *.csv
EOF
) | tee /home/batch/logs/mylog.log | mail -s "Mail subject" "me@mycompany.com"

crontab - e:

45 10 * * * /bin/sh /home/batch/myscript.sh

OK -从提示符启动邮件:

Remote working directory is /
psftp> Remote directory is now /outgoing
psftp> *.csv: nothing matched
psftp> quit

KO -邮件从crontab启动:

Remote working directory is /
psftp> quit

Google没有提供很多帮助。我已经尝试了几种EOF语法,因为它似乎是这里文档的常见问题,但我不认为它来自于此。它可能与某种嵌套级别有关的crontab,有这样的事情吗?

好了,问题解决了:

crontab用于执行脚本的用户不同。发生的事情是sftp的密钥没有为这个用户注册。这将导致一个提示,要求注册密钥,我的脚本没有回答。

我以它使用的用户身份连接,psftp并注册密钥

相关内容

  • 没有找到相关文章

最新更新