使用wget将文件下载到目录并将电子邮件链接/附件下载到地址

问题描述 投票:0回答:2

我正在使用以下cron任务:

wget -O ~/files/csv_backups/products_csv/products-`date +%Y-%m-%d-%H%M%S`.csv http://[site_URL]/product-report/csv

获取每日产品销售CSV。它目前将它放在服务器上的文件目录中,并用日期戳命名。

我要做的是它还发送一封电子邮件,其中包含文件的附件或正文中的文件的链接,以及特定的电子邮件地址。我似乎找不到办法做到这一点。有什么想法吗?

更新:

我已尝试使用建议的代码,但它只是输出文件的尾随路径,而不是正确的下载链接。所以我尝试了以下内容

echo "<a href="http://www.example.com' . $(ls -1t ~/files/csv_backups/products_csv/* | head -1) . '">Download File</a>" | mail -s "Daily Products CSV Report" [email protected]

但是我得到了用纯文本打印的回声。言归正传..

更新:

1)OK ...所以我的第一个问题是我尝试重命名文件的时间戳不起作用,下载失败。所以我现在删除了时间戳(尽管我希望它可以进行备份...)。以下代码是我用来下载文件的新行。无论服务器时间戳如何,它都应该不断下载新副本。这是因为在您访问该URL之前根本不会生成该文件,因此在wget尝试下载之前没有文件可以比较时间。

wget --timestamping -r -O files/csv_backups/products_csv/products.csv http://www.example.com/reports/product-report/csv

2)对于电子邮件,我删除了html并且刚刚离开了以下内容,因为由于某种原因,回声渲染了纯文本中的html,这不起作用。为什么发生这种情况可能也是为什么我不能使用URL末尾的$(ls -1t * | head -1)行来分析最新文件...

echo "http://www.example.com/files/csv_backups/products_csv/products.csv" | mail...
shell email cron wget
2个回答
1
投票

如果您没有安装mutt,那么您可以执行以下操作:

echo "$(ls -1t ~/files/csv_backups/products_csv/* | head -1)" | 
mail -s "subject line" [email protected]

这将给出主题体中文件的路径

整个echo $(ls -1t ~/files/csv_backups/products_csv/* | head -1)是因为你不知道文件名是什么,因为你添加时间戳而不是日期戳。 %H%M%S还会为文件名添加小时分钟和秒。

使用上面的命令,我们假设该目录中的最新文件将是最近下载的文件。

或者你可以使用uuencode,它是GNU sharutils的一部分。

uuencode $(ls -1t ~/files/csv_backups/products_csv/* | head -1) $(ls -1t ~/files/csv_backups/products_csv/* | head -1) | 
mail -s "subject line" [email protected]

1
投票

海纳史蒂文写了一篇关于[编写通过电子邮件发送文件的脚本]的好文章(http://www.shelldorado.com/articles/mailattachments.html。他还写了sendfile,它使用了metamail包(可在上面的链接中找到)。

另一种方法是使用perl ;-)(man perlfaq9涵盖电子邮件)或使用uuencode除尘。

 uuencode Sales.cvs Sales.cvs | mail -s "Kaching"  [email protected]

注意:我认为所有版本的uuencode都要求您给出附件的名称两次:一次是要编码的文件;和一次用于从消息中提取的文件的名称。 uuencode也可能在某些BSD系统上显示为b64encode。您可以使用uuencode开关使用-m进行Base64编码。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.