接上文 python插件做nagios发报警邮件 http://www.nginxs.com/linux/371.html,由于python 传入的参数,python 会自动加 \ ,经过代码测试,代码如下:

nagios $> cat test.py
#!/usr/bin/python
import sys

str = sys.argv[1]
str = repr(str)
print str
nagios $> python test.py “aaaa\nfffff”
‘aaaa\\nfffff’

测试过很多方法,都不行,最后用了最笨的的方法就是读文件!就稍微改动了一下上文脚本

nagios $> cat /usr/local/nagios/libexec/sendmail
#!/usr/bin/python
import smtplib
import string
import sys
import getoptdef usage():print """sendmail is a send mail PluginsUsage:sendmail [-h|--help][-t|--to][-s|--subject][-m|--message]Options:--help|-h)print sendmail help.--to|-t)Sets sendmail to email.--subject|-s)Sets the mail subject.--message|-m)Sets the mail bodyExample:./sendmail -t 'eric@nginxs.com' -s 'hello eric' -p /tmp/nagios-mail '"""sys.exit(3)try:options,args = getopt.getopt(sys.argv[1:],"ht:s:p:",["--help","--to=","--subject=","--path="])
except getopt.GetoptError:usage()
for name,value in options:if name in ("-h","--help"):usage()if name in ("-t","--to"):
# accept message userTO = valueTO = TO.split(",")if name in ("-s","--title"):SUBJECT = valueif name in ("-p","--path"):MESSAGE = value                     #传入文件路径MESSAGE = open(MESSAGE,'r')    #只读模式打开文件MESSAGE = MESSAGE.read()       #读取文件内容
#smtp HOST
HOST = "smtp.126.com"
#smtp port
PORT = "25"
#FROM mail user
USER = 'eric'
#FROM mail password
PASSWD = '123456'
#FROM EMAIL
FROM = "yangzi2008@126.com"try:BODY = string.join(("From: %s" % FROM,"To: %s" % TO,"Subject: %s" % SUBJECT,"",MESSAGE),"\r\n")smtp = smtplib.SMTP()smtp.connect(HOST,PORT)smtp.login(USER,PASSWD)smtp.sendmail(FROM,TO,BODY)smtp.quit()
except:print "UNKNOWN ERROR"print "please look help"print "./sendmail -h"

注意:
改动了 message 以读文件内容方式传入,放弃了以参数方法传入。
-m 擦数改为 -p参数 -p 后面 跟 文件的 绝对路径。

修改 nagios 的 commands.cfg

nagios $> vim /usr/local/nagios/etc/objects/commands.cfg
define command{command_name    notify-host-by-emailcommand_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" > /tmp/nagios-mail | $USER1$/sendmail -t $CONTACTEMAIL$ -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -p /tmp/nagios-mail}define command{command_name    notify-service-by-emailcommand_line    /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$" > /tmp/nagios-mail| $USER1$/sendmail -t $CONTACTEMAIL$ -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -p /tmp/nagios-mail}

本文转自Deidara 51CTO博客,原文链接:http://blog.51cto.com/deidara/461011,如需转载请自行联系原作者

python插件做nagios发报警邮件二相关推荐

  1. Centos7或ubuntu18.04配置公共邮箱或个人邮箱发报警邮件

    系统:Ubuntu18.04配置方法 使用的软件:heirloom-mailx 亲测可用,这篇文章说的是配置邮箱,并发送邮件,具体报警邮件及脚本后续有空写 1.配置软件源 ubuntu18.04上无法 ...

  2. 七夕快到了,教大家用Python来做一个有趣的表白二维码!

    二维码我们日常天天见到的,这玩意居然能用来表白?哎,在程序员的世界里,没有什么是不可能的, 今天教大家自己做一个,让女朋友去扫描一下,嘿嘿,那么问题来了,没有女朋友的兄弟怎么办..... 赶紧找一个 ...

  3. python实习做什么工作-大一/大二学生Python实习的困惑?

    题主是一名非名校的CS本科学生,现在遇到了一些困惑,想请教一下热心的segmentfault网友.因为不是985/211名校,现在题主所在的这所学校我感觉学风非常不好,第一是整体水平太低,一学期结束了 ...

  4. nagios 使用MSN 发报警消息

    - -   公司管理的服务器太多了!在年前部属了cacti,但cacti只能做事后分析的工作,而实时报警功能不强,在部属cacti前就在监控PC上安装了nagios,只是一直没有时间详细研究!目前在我 ...

  5. Python-群发推广邮件

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.Python-群发推广邮件 二.代码 总结 解释 一.Python-群发推广邮件 通过切换多个发件邮箱账号,每个发件邮箱 ...

  6. 动手下载网易课程视频 -- Eclipse通过pip安装python插件

    1. 通过pip安装python插件 步骤一: 打开Eclipse 步骤二: Window -> Preferences -> PyDev -> Interpreters -> ...

  7. linux检测磁盘 报警,linux服务器磁盘监控脚本分享(含报警邮件)

    在日常的运维工作中,我们经常会对服务器的磁盘使用情况进行巡检,以防止磁盘爆满导致的业务故障. 如果能编写一个合理完善的监控脚本,当磁盘使用率达到我们设置的阀值时,就自动发送报警邮件,以便我们及时获悉到 ...

  8. 服务器磁盘监控脚本分享(含报警邮件)

    在日常的运维工作中,我们经常会对服务器的磁盘使用情况进行巡检,以防止磁盘爆满导致的业务故障. 如果能编写一个合理完善的监控脚本,当磁盘使用率达到我们设置的阀值时,就自动发送报警邮件,以便我们及时获悉到 ...

  9. python发邮件11002_【python发送zabbix报警邮件,SSL版本】mailman.py

    [python发送zabbix报警邮件,SSL版本]mailman.py#!/usr/local/bin/python3 # # via  @ 20150210 # SSL only ''' 用法: ...

最新文章

  1. 神经网络与机器学习 笔记—改善反向传播的性能试探法
  2. ArcGIS 复制要素
  3. php根据IP获取所有地,腾讯IP API
  4. Python继承外另一种重用方式——组合
  5. 安卓代码迁移:Make.exe: *** [libs/armabi-v7a/gdbserver] Error 1
  6. SQL Server 使用OPENROWSET访问ORACLE遇到的各种坑总结
  7. [导入]关于OllyDbg 2.0的消息..
  8. 福利 | 2018 OpenInfra Days China限量版免费票任性放出
  9. 100个犯人和一个亮灯泡_每个人都在一个开放的组织中更换灯泡
  10. dreawever与php做网页,教程方法;Drea、mweaver CS5更改代码颜色方法电脑技巧-琪琪词资源网...
  11. 贺利坚老师汇编课程47笔记:jmp指令无条件转移只修改IP
  12. 转发和重定向的区别[来源于网络]
  13. C中常量数组不能修改
  14. 推荐一个springboot和springcloud系列的博客专家--方志朋
  15. Unity中物体移动脚本
  16. ALTER TABLE 语句
  17. 在ceph 的admin-node安装calamari详细步骤
  18. Vue学习日志之语法糖
  19. NLP入门(八)使用CRF++实现命名实体识别(NER)
  20. 如何优雅的写 Controller 层代码?找对姿势!

热门文章

  1. linux基础概念和个人笔记总结(6)
  2. WP8.1学习系列(第十二章)——全景控件Panorama开发指南
  3. web.config中配置Session
  4. GNS3做交换实验使用感受
  5. 【拒绝一问就懵】之Activity的启动流程
  6. 堆和栈的区别 (转贴)
  7. 主流浏览器新版本将不再支持TLS 1.0/1.1
  8. Android更新带进度条的通知栏
  9. Web Components 简述
  10. openSession()和getCurremtSession()的区别