我有一个 bash 脚本,它通过命令行 mutt 发送电子邮件。此 bash 脚本由 cron 作业调用(使用 crontab -e 设置,因为执行脚本中的所有项目都需要权限)。我设置了发件人地址,以便用户可以回复(这很正常),但显示的名称是“root”。这引起了一些混乱。有没有实际的方法来设置与电子邮件地址相关联的名称?
脚本的电子邮件部分如下:
[email protected]
export EMAIL
mutt -s "subject" -a /home/user/directory/file*.xls -- [email protected], [email protected] < /home/user/directory/message.txt
谢谢
凯文
答案1
确保以正确名称发送的电子邮件的最简单方法是在您需要发送的帐户上运行 cron 作业:
例子
me@domain:~$ crontab -e
如果您希望 root 用户通过 mutt 发送消息,请尝试这个命令行(对我来说很有效):
export EMAIL="Me <[email protected]>" && mutt -s "subject" -a /home/user/directory/file*.xls -- [email protected], [email protected] < /home/user/directory/message.txt
希望这可以帮助。
答案2
使用/etc/crontab
而不是,cron
因为您可以使用它来包含用于启动您需要启动的命令的用户名。
例子:
more /etc/crontab
节目
# /etc/crontab:系统范围的 crontab # 与任何其他 crontab 不同,您不必运行“crontab” # 编辑此文件时安装新版本的命令 # 以及 /etc/cron.d 中的文件。这些文件也有用户名字段, # 其他 crontab 都不做这个。 外壳=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # mh dom mon dow 用户命令 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root 测试 -x /usr/sbin/anacron || ( cd / && run-parts --repor /etc/cron.daily ) 47 6 * * 7 root 测试 -x /usr/sbin/anacron || ( cd / && run-parts --repor /etc/cron.weekly ) 52 6 1 * * root 测试 -x /usr/sbin/anacron || ( cd / && run-parts --repor /etc/cron.monthly ) #
将 cron 中的行添加到此文件中,并在 dow(星期几)和命令之间添加用户名。然后脚本将以该用户身份启动。
这比在用户 crontab 中执行此操作要好一些,因为您可以在此处为每个需要的用户包含相同的行,而不需要维护多个 crontab。
如果您需要 root 来访问某些文件,您应该更改其权限或创建一个包含该命令和您的用户的组。