我编写了一个 shell 脚本,它执行以下操作:
- 从 POP3 帐户检索邮件(使用 GetMail)
- 将该电子邮件的副本保存到 S3(使用 AWS CLI)
- 通过电子邮件将电子邮件的文件大小发送给我
脚本运行美好的手动和技术运行来自 CRON,但它似乎只发送电子邮件。getmail 和 S3 位似乎没有运行。
我读过的所有内容似乎都在强调,使用 CRON 时需要小心相对路径等,但我思考我在需要去的任何地方都使用绝对路径,所以我很困惑问题可能出在哪里。
我的 Shell 脚本在这里:
#!/bin/bash
# Run GetMail
getmail -r /PATH/TO/EMAIL/getmail.email
# Save to S3
aws s3 cp /PATH/TO/SCRIPT/email-backup.mbox s3://XXXXXXXXXX/email-backup.mbox
# Send Confirmation Email
SUBJECT="EMAIL SUBJECT"
EMAIL="[email protected]"
# Get current filesize
FILENAME=/PATH/TO/SCRIPT/email-backup.mbox
FILESIZE=$(stat -c%s "$FILENAME")
# Email Content
EMAILMESSAGE="/tmp/emailmessage.txt"
echo "EMAIL BODY" >$EMAILMESSAGE
echo "" >>$EMAILMESSAGE
echo "Current File Size: $FILESIZE bytes" >>$EMAILMESSAGE
# Send the Mail
/bin/mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE
答案1
我遇到过类似的问题,因为 CRON 可能非常挑剔。我最好的猜测是您需要将路径添加到 aws 命令中,例如:
/usr/local/bin/aws s3 cp /PATH/TO/SCRIPT/email-backup.mbox s3://XXXXXXXXXX/email-backup.mbox
祝你好运!