zabbix 发送邮件和短信的脚本

2023-05-16

对接sms和监控的脚本,其实原理很简单,zabbix会通过参数的方式传送给脚本三个参数

$1 user

$2 subject

$3  message_body

然后通过curl 通过get的方式提交网页就ok了。

#!/bin/bash
sms_UID=""
sms_passwd=""
sms_message=$3""
sms_mobilenum=$1
sms_URL="http://www.smsadmin.cn/smsmarketing/wwwroot/api/get_send/?"
sms_linkid=`date +%s%N `
sms_dtime=`date +%Y%m%d%H%M`
sms_message_gb2312=`echo $sms_message |iconv -f utf-8 -t GB2312 `
string=""$sms_URL"uid="$sms_UID"&pwd="$sms_passwd"&mobile="$sms_mobilenum"&msg="$sms_message_gb2312"&dtime="$sms_dtime"&linkid="$sms_linkid""
 curl $string


对接邮件和监控的脚本,原理同上不同的是这个通过邮件发送

#!/bin/bash
smtp_server=''
from_email_addr=''
to_email_addr=$1
message_subject=$2
message_body=$3
sendEmail='/usr/local/bin/sendEmail'
message_subject_gb2312=`iconv -t GB2312 -f UTF-8 << EOF
$message_subject
EOF`
message_body_gb2312=`iconv -t GB2312 -f UTF-8 << EOF
$message_body
EOF`
$sendEmail -s "$smtp_server" -f "$from_email_addr" -t "$to_email_addr" -u "$message_body" -m "$message_body" 
 这里面涉及到转码的问题,linux下默认的文字编码是utf-8 但是在中国绝大部分编码是GB2312

使用iconv转码,可以使用iconv -l 查看所有支持的编码方式

如果需要转码的是字符串则

echo "str" | iconv -f utf-8 -t GB2312 

即可,

如果需要转码的是文件,则

iconv -f utf-8 -t gb2312 file

今天实际使用了一下上面的短信脚本,发现根本就不能用,一个是短信平台有短信内容要求,需要在全文的后面加签名,还有需要信息为gb2312编码。

首先解决签名问题,在脚本后面加【云科技】,就像上面的脚本一样。结果怎么都不行,再一查字符编码不对,linux默认的是utf-8编码,发送到网站以后

直接就乱码了当然也就发布出去了。

然后就有了下面的这个脚本,将签名放在监控软件中而不是放在脚本中,这样就能统一至少又监控发送过来的参数是统一的utf-8编码

#!/bin/bash
sms_UID="user"
sms_passwd="pwd"
sms_message=$3
sms_mobilenum=$1
sms_URL="http://www.smsadmin.cn/smsmarketing/wwwroot/api/get_send_urldecode/?"
sms_linkid=`date +%s%N `
sms_dtime=`date +%Y%m%d%H%M`
echo $sms_message"`date`">>/tmp/log
<pre name="code" class="plain">sms_message_gb2312="`echo $sms_message |iconv -f utf-8 -t GB2312|tr -d '\n' `"
sms_message_urlcode="`echo "$sms_message_gb2312" | tr -d '\n' |xxd -plain |sed 's/\(..\)/%\1/g'|tr -d '\n'`"
string="uid="$sms_UID"&pwd="$sms_passwd"&mobile="$sms_mobilenum"&msg="$sms_message_urlcode"&dtime="$sms_dtime"&linkid="$sms_linkidcurl "$sms_URL$string"


  

解释一下,首先将监控传送过来的参数接收放在sms_message  sms_mobilnum中,

需要提交的数据一共有6个即短信平台UID,passwd,需要发送的电话号码sms_mobilnum,信息主体sms_message,发送时间dtime和发送序列号sms_linkid

将接收过来的信息主体进行编码转换又utf-8转为gb2312 并且删除所有换行符。

sms_message_gb2312="`echo $sms_message |iconv -f utf-8 -t GB2312|tr -d '\n' `"

再将转换后的信息进行url编码

sms_message_urlcode="`echo "$sms_message_gb2312" | tr -d '\n' |xxd -plain |sed 's/\(..\)/%\1/g'|tr -d '\n'`"
其实url编码的原理很简单,删除所有换行后,将字符序列转换为16进制序列,然后在每两个字符中间插入%即可。

这个监控的脚本任务算是完事了,鼓捣好几天,另utf-8 编码是所有字符编码的超集国际通用。但是因为其字符数量不如gb2312 和gbk 多,

所以国内用的绝大部分是gb2312




2016.01.06 更新发送邮件脚本python版

#!/usr/bin/python
# -*- coding: utf-8 -*-
import smtplib
from email.mime.text import MIMEText
import sys

content=sys.argv[3]
subject=sys.argv[2]
mailto=[sys.argv[1]]
mail_host='smtp.xxxx.com'
user='user'
passwd='pas'
msg = MIMEText(content,_subtype='plain',_charset='utf8')
msg['Subject'] = subject
msg['From'] = 'ali-warn@neusoft.com'
msg['To'] = ";".join(mailto)
send = smtplib.SMTP(mail_host,25)
send.starttls()
send.ehlo()
send.login(user,passwd)
send.sendmail('sender@xxx.com',mailto,msg.as_string())
send.close()

life is short ,i use python!!!

life is short ,i use python!!!

life is short ,i use python!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

zabbix 发送邮件和短信的脚本 的相关文章

  • pve 相关

    一 pve 创建的虚拟机的配置文件位置 在宿主机的 etc pve qemu server xff0c 这里有创建虚拟机的相关硬件信息 root 64 pve span class token comment cd etc pve qemu
  • mysql在linux下的my.cnf文件在哪里!

    用rpm包安装的MySQL是不会安装 etc my cnf文件的 xff0c 至于为什么没有这个文件而MySQL却也能正常启动和作用 xff0c 在点有两个说法 xff0c 第一种说法 xff0c my cnf只是MySQL启动时的一个参数
  • shell后台并发执行的最佳实践

    一 shell如何在后台执行 1 nohup命令 通常我们都是远程登录linux终端 xff0c 而当我们退出终端时在之前终端运行的程序都会终止 xff0c 有时候先想要退出终端也要程序继续执行这时nohup就登场了 nohup命令 可以将
  • 任意输入10个数,找出最大数和最小数。

    任意输入10个数 找出最大数和最小数 span class token macro property span class token directive keyword include span span class token stri
  • 如何在 Chromebook 上启用开发者模式

    写在前面的话 xff1a 版权声明 xff1a 本文为博主原创文章 xff0c 转载请注明出处 xff01 博主是一个小菜鸟 xff0c 并且非常玻璃心 xff01 如果文中有什么问题 xff0c 请友好地指出来 xff0c 博主查证后会进
  • 【C语言】实现 atoi 函数

    写在前面的话 xff1a 版权声明 xff1a 本文为博主原创文章 xff0c 转载请注明出处 xff01 博主是一个小菜鸟 xff0c 并且非常玻璃心 xff01 如果文中有什么问题 xff0c 请友好地指出来 xff0c 博主查证后会进
  • 【C语言】字符串合集

    写在前面的话 xff1a 版权声明 xff1a 本文为博主原创文章 xff0c 转载请注明出处 xff01 博主是一个小菜鸟 xff0c 并且非常玻璃心 xff01 如果文中有什么问题 xff0c 请友好地指出来 xff0c 博主查证后会进
  • 线程上下文切换和进程上下文切换的区别

    进程切换分两步 1 切换页目录以使用新的地址空间 2 切换内核栈和硬件上下文 对于linux来说 xff0c 线程和进程的最大区别就在于地址空间 对于线程切换 xff0c 第1步是不需要做的 xff0c 第2是进程和线程切换都要做的 所以明
  • 【Ubuntu】解决 Could not get lock /var/lib/dpkg/lock-frontend

    写在前面的话 xff1a 版权声明 xff1a 本文为博主原创文章 xff0c 转载请注明出处 xff01 博主是一个小菜鸟 xff0c 并且非常玻璃心 xff01 如果文中有什么问题 xff0c 请友好地指出来 xff0c 博主查证后会进
  • 【Ubuntu】解决 error: dpkg frontend is locked by another process

    写在前面的话 xff1a 版权声明 xff1a 本文为博主原创文章 xff0c 转载请注明出处 xff01 博主是一个小菜鸟 xff0c 并且非常玻璃心 xff01 如果文中有什么问题 xff0c 请友好地指出来 xff0c 博主查证后会进
  • 【OpenCV】关于Vec3b类型的含义与使用

    写在前面的话 xff1a 版权声明 xff1a 本文为博主原创文章 xff0c 转载请注明出处 xff01 博主是一个小菜鸟 xff0c 并且非常玻璃心 xff01 如果文中有什么问题 xff0c 请友好地指出来 xff0c 博主查证后会进
  • 【Java】文件读写和输入输出

    写在前面的话 xff1a 版权声明 xff1a 本文为博主原创文章 xff0c 转载请注明出处 xff01 博主是一个小菜鸟 xff0c 并且非常玻璃心 xff01 如果文中有什么问题 xff0c 请友好地指出来 xff0c 博主查证后会进
  • 【剑指Offer】题3:数组中重复的数字

    写在前面的话 xff1a 版权声明 xff1a 本文为博主原创文章 xff0c 转载请注明出处 xff01 博主是一个小菜鸟 xff0c 并且非常玻璃心 xff01 如果文中有什么问题 xff0c 请友好地指出来 xff0c 博主查证后会进
  • 【C语言】关于遍历字符串的三种方法

    写在前面的话 xff1a 1 版权声明 xff1a 本文为博主原创文章 xff0c 转载请注明出处 xff01 2 博主是一个小菜鸟 xff0c 并且非常玻璃心 xff01 如果文中有什么问题 xff0c 请友好地指出来 xff0c 博主查
  • 逻辑地址、虚拟地址、物理地址以及内存管理

    本文涉及的硬件平台是X86 xff0c 如果是其它平台 xff0c 嘻嘻 xff0c 不保证能一一对号入座 xff0c 但是举一反三 xff0c 我想是完全可行的 1 概念 物理地址 physical address 用于内存芯片级的单元寻
  • 为 CentOS 配置网络

    用桥接方式给CentOS配置网络 xff0c 这里我使用的是CentOS 6 5 第一步 点开虚拟机的设置 xff0c 网络连接选择桥接方式 xff0c 其他勾选按照下图 xff0c 如下图做相关的设置 xff1a 第二步 打开网络连接 x
  • 32位 idea启动出现“could not find main class com/intellij/idea/Main“错误解决方法

    idea启动出现 could not find main class com intellij idea Main 错误的解决方法 32位环境下安装idea及解决could not find main class com intellij
  • java实现获取两个list交集

    如何获取两个list的交集 xff0c 使用java8 的stream实现非常容易 java流实现 创建两个字符串list xff0c 两者都有重复的元素 xff1a List lt String gt list 61 Arrays asL
  • shell中$(( ))与$( )还有${ }的区别

    与 96 96 反引号 在bash shell中 xff0c 与 96 96 反引号 都是用来做命令替换 command substitution 用的 echo the last sunday is date d 34 last sund
  • apache 的网页内容显示是乱码

    apache 的网页内容显示是乱码 非常感觉下面各位的回答 xff0c http forum ubuntu org cn yaoms etcte HuntXu sevk shellex http linux chinaunix net ma

随机推荐

  • 字母及数字上标下标

    字母及数字上标下标 欢迎使用新的改变 欢迎使用 常用上标 常用下标 更多上标
  • 构造矩阵乘最优解

    void bracket int i int j if i 61 61 j cout lt lt 34 M 34 lt lt i else cout lt lt 34 34 int k 61 K i j bracket i k 1 brac
  • vs2012 出现LINK : fatal error LNK1104: 无法打开文件“kernel32.lib”问题

    首先 xff0c 我是在已经安装了vs2010的基础上安装的vs2012 xff0c 测试安装的时候发现最基本的helloworld程序都通不过 xff0c 出现LINK fatal error LNK1104 无法打开文件 kernel3
  • SerDes知识详解

    一 SERDES的作用 1 1并行总线接口 在 SerDes流行之前 芯片之间的互联通过 系统同步或者源同步的并行接口传输数据 图 1 1 演示了系统和源同步并行接口 随着接口频率的提高 xff0c 在系统同步接口方式中 有几个因素限制了有
  • enum : C#中的枚举类型,原来有这么多用法

    今天来的时候打开了MSDN扫了一眼C 里的枚举类型 蓦然发现这东西还有些新玩法 首先是简单介绍 xff0c 在此略过 因为enum用法很简单么 定义一个简单的枚举类型 xff1a enum Days Sat Sun Mon Tue Wed
  • ubuntu下安装cuDNN

    正确的安装cuDNN方式 xff0c 其实跟着官方安装说明进行安装就可以了 1 从https developer nvidia com cudnn上下载cudnn相应版本的压缩包 xff08 需要注册或登录 xff09 下载cuda对应版本
  • 面向对象(3)

    私有权限 封装的意义 xff1a 将属性和方法放到一起做为一个整体 xff0c 然后通过实例化对象来处理 xff1b 隐藏内部实现细节 xff0c 只需要和对象及其属性和方法交互就可以了 xff1b 对类的属性和方法增加 访问权限控制 私有
  • 【vnc远程桌面】未联网状态下使用离线包配置vnc

    系统为ubuntu18 04 amd64版本 本教程使用vino配置远程服务器 首先 xff0c 离线安装vino包后远程传输给待控制服务器 xff1a sudo apt update sudo apt get download apt c
  • 7.用选择排序法对一个数组进行排序。

    include lt stdio h gt define N 5 void datesort int a int i j k temp for i 61 0 i lt N 1 i 43 43 k 61 i for j 61 i 43 1 j
  • error while loading shared libraries: xxx.so.x"错误的原因和解决办法

    一般我们在Linux下执行某些外部程序的时候可能会提示找不到共享库的错误 比如 tmux error while loading shared libraries libevent 1 4 so 2 cannot open shared o
  • Linux终端进度条显示进程执行进度

    在Linux执行费时操作 xff08 如tar xff09 时显示进度条 xff0c 以不至于让用户觉得程序卡死了 效果 文本进度条 结束后 xff1a 图形化字符进度条 文本进度条怎么做 进度条实现 网上有一些老六会说要下载一些工具 xf
  • 判断页面相似度的python实现

    判断页面相似度的python实现 xff1a 两天时间实现了一小部分 xff0c 大量其实是xpath解析以及字符串和文件操作 xff0c 性能还需要改善 xff0c 下面说一下步骤 xff1a 动态获取DOM树结构 xff1a 因为主要是
  • Win10下VScode+MSVC+CMake搭建C++开发环境

    最近工作需要大规模C 43 43 开发 xff0c 以往都是使用Visual Studio xff08 以下简称VS xff09 xff0c 虽然VS是一款很强大的IDE xff0c 但也同样带来过于庞大 xff0c 运行卡顿等问题 xff
  • iOS 表视图

    基本概念 1 表头视图 xff08 table header view xff09 表视图最上边的视图 xff0c 用于展示表视图的信息 2 表脚视图 xff08 table footer view xff09 表视图最下面的视图 xff0
  • ISBN从10到13位的算法

    图书的ISBN有两种编码 xff0c 一种长度是10位的 xff0c 另一种是13位的 两者其实是可以用特定的算法相互推导的 xff0c 关键在于最后一位校验码的计算 1 10位到13位 10位的isbn编号是7111165616 xff0
  • 阿里云服务器(ECS)实战--安全组策略配置(端口放行)

    什么是阿里云安全组策略 xff1f 阿里云安全组是一种虚拟防火墙 也是阿里云处于安全考虑的一种策略 一台ECS云服务器实例必须至少属于一个安全组 我们知道服务器的各种服务要依赖端口来实现 我们可以将安全组想象成服务器各个端口的开关 默认创建
  • 字符串的排序(全排序)

    一 前言 剑指Offer 中题38 二 题目 输入一个字符串 xff0c 打印出该字符串中字符的所有排列 例如 xff0c 输入字符串abc xff0c 则打印出由字符a b c所能排列出来的所有字符串abc xff0c acb xff0c
  • 自己总结的一些c语言概念 练习题

    c语言的一些基础概念 局部变量的作用域为局部变量所在的局部范围 xff0c 局部变量优于全局变量 举例如下 xff1a span class token keyword int span num span class token opera
  • iOS本地搜索(谓词)

    Use Code 默认搜索 64 param fieldArray 搜索字段数组 64 param inputString 输入文字 64 param array 搜索数据源 64 return 搜索结果 NSArray searchWit
  • zabbix 发送邮件和短信的脚本

    对接sms和监控的脚本 xff0c 其实原理很简单 xff0c zabbix会通过参数的方式传送给脚本三个参数 1 user 2 subject 3 message body 然后通过curl 通过get的方式提交网页就ok了 bin ba