我正在尝试使用gpg2
Nagios3
发送的邮件进行密码翻译。为此,我在/etc/nagios3/commands.cfg
上创建了这个自定义命令:
/usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /usr/bin/gpg2 --armor --encrypt --recipient toto@titi.com | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
}
有些观点:
电子邮件已发送,但它是"为空":
Sep 19 14:35:25 tutu nagios3:完成守护......(新PID = 4313)
9月19日14:36:15 tutu nagios3:服务警告:
tete_vm; HTTP; OK; HARD; 4; HTTP OK:HTTP / 1.1 200 OK - 0.441中的347字节
第二响应时间9月19日14:36:15 tutu nagios3:SERVICE
通知:tata; tete_vm; HTTP;确定;通过电子邮件通知服务; HTTP OK:
HTTP / 1.1 200 OK - 在0.441秒响应时间内347字节
命令:
/usr/bin/gpg2 --armor --encrypt --recipient toto@titi.com | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$</code>
在命令行上运行良好
我测试了这个命令:
/usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /usr/bin/gpg2 --armor --encrypt --recipient toto@titi.com >> /tmp/toto.txt
创建了文件/tmp/toto.txt
但是&#34;为空&#34;。
所以,在这个文件上使用/usr/bin/gpg2
似乎是一个问题,但我找不到原因!
答案 0 :(得分:1)
使用GnuPG从服务内部加密时最常见的错误是收件人的密钥是由另一个(系统)用户导入的,而不是运行服务的用户,例如root
导入的,但该服务以nagios
运行。
GnuPG维护每用户&#34; GnuPG主目录&#34; (通常为~/.gnupg
),其中包含每用户密钥环。如果您以root用户身份导入,则其他服务帐户对此处的密钥一无所知。
调试问题的第一步是将gpg
的stderr重定向到文件,这样您就可以通过向GnuPG调用添加2>>/tmp/gpg-error.log
来阅读错误消息:
/usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /usr/bin/gpg2 --armor --encrypt --recipient toto@titi.com 2>>/tmp/gpg-error.log | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
如果问题类似于&#34;找不到密钥&#34;或类似的,您有两种可能解决问题:
使用--homedir [directory]
选项将GnuPG主目录硬编码到其他位置,例如在您还存储Nagios插件的位置。
请注意使用适当的限制性权限。如果允许其他用户阅读文件,GnuPG会非常挑剔!