0

プロンプトからはうまく機能するが、crontab からは機能しないスクリプトがあります。壊れているのは、スクリプトのサブシェルで無視されるヒア ドキュメントだけです。スクリプトは psftp を使用します。コードは次のとおりです。

/home/batch/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 に関してある種のネスト レベルに関係している可能性がありますが、そのようなことはありますか?

よろしくお願いします

4

1 に答える 1

1

了解しました。問題は解決しました。

crontabがスクリプトの実行に使用するユーザーは異なります。何が起こったのかというと、sftpのキーがこのユーザーに登録されていませんでした。これにより、キーの登録を求めるプロンプトが表示されますが、スクリプトでは応答しませんでした。

使用するユーザーとして接続し、psftpを実行して、キーを登録しました。

于 2013-01-11T12:06:38.463 に答える