100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > linux怎么发微信 Linux中使用Shell把报警信息发送至邮件和微信上(示例代码)

linux怎么发微信 Linux中使用Shell把报警信息发送至邮件和微信上(示例代码)

时间:2020-02-18 04:10:13

相关推荐

linux怎么发微信 Linux中使用Shell把报警信息发送至邮件和微信上(示例代码)

Linux中使用Shell把报警信息发送至邮件和微信上

创建企业微信报警

注册一个企业微信号

点击企业微信,进行企业注册。

注册成功后会看到企业信息页面,把企业ID先记录下来,后面发送报警脚本里需要配置。

创建一个部门,专供发送报警用,并添加需要接收报警的成员

点击“通讯录”,再点击+号,选择添加部门

把部门ID记录下来,后面配置web端用户报警媒介的收件人要用到。

给刚创建的部门添加成员,可以直接添加成员也可以微信邀请,可以先将管理员微信添加进来。

新增一个第三方应用

点击应用与小程序-创建应用

可见范围那里选择刚才添加的那个部门。

将AgentId和Secret记录下来,发送脚本里需要配置

邮箱设置

配置mail.rc

cat >>/etc/mail.rc<

set [emailprotected] # 设置发件人信息,注:如果使用163邮箱,发件人信息必须设置和实际邮箱号一致,不然无法发送。

set smtp= # 设置邮件服务器

set smtp-auth-user=‘175xxxxx5‘ # 设置验证用户名

set smtp-auth-password=‘12345678‘ # 设置验证密码

set smtp-auth=login # 可忽略

报警脚本

我在这里只是举个实例,具体的监控报警事件,请以实际为准。

如:在生产环境下批量检测Web服务是否正常,最多检查三次,并且发送相关邮件或微信报警信息。

以用户的形式发送信息,Shell代码如下:

# cat web_server_user.sh

#!/bin/bash

#定义脚本存放路径

path=/tmp/scripts

#定义邮件列表,以空格隔开

MAIL_GROUP="[emailprotected]"

#定义日志路径

LOG_FILE="/tmp/scripts/web_check.log"

###send message from weixin for monitoring###

CropID=‘wwxxxxxx061‘ # 企业ID(AgentId)

Secret=‘m-v-x6BxxxxxxxxxxxxXmQMfw‘

GURL="https://qyapi./cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"

Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F " ‘{print $10}‘)

PURL="https://qyapi./cgi-bin/message/send?access_token=$Gtoken"

#创建目录

[ ! -d "$path" ] && mkdir -p $path

#定义URL列表函数

function UrlList(){

cat >$path/domain.list<

/wutengfei

/wutf

http://192.168.246.171

EOF

}

#定义检查URL函数

function CheckUrl(){

#初始化失败次数为0次

FAILCOUNT=0

#检查3次,定义for循环

for ((i=1;i<=3;i++))

do

#定义具体的访问URL命令,不输出信息

wget -T 5 --tries=1 --spider $1 >/dev/null 2>&1

if [ $? -ne 0 ];then

let FAILCOUNT+=1

else

##返回值是0,则表示访问URL成功,跳出for循环,不做3次检测了

break

fi

done

##将失败次数作为返回值,返回函数外的脚本中

return $FAILCOUNT

}

#定义邮件函数

function Mail(){

local SUBJECT_CONTENT=$1

for MAIL_USER in $(echo $MAIL_GROUP)

do

#发送邮件

mail -s "${SUBJECT_CONTENT}" ${MAIL_USER} < ${LOG_FILE}

done

}

#定义微信函数

function WeiXin(){

local int AppID=1000002 # 企业号中的应用id

#local UserID="${cat $path/weixin_user.txt}" # 部门成员id,企业微信中定义的微信接收者

local UserID="@all" # 企业微信APP中的全部报警用户

#local PartyID=$2 # 部门id,定义了范围,组内成员都可接收到消息

local Msg=$(cat ${LOG_FILE}) # 过滤出企业微信中传递的第三个参数

printf ‘{

# printf ‘"touser": "‘$UserID‘",

printf ‘"touser": "‘"$UserID"","

"

#printf ‘"toparty": "$PartyID",

printf ‘"msgtype": "text",

printf ‘"agentid": "‘$AppID‘",

printf ‘"text": {

##printf ‘"content": "‘$Msg‘"

printf ‘"content": "‘"$Msg"""

"

printf ‘},

printf ‘"safe":"0"

printf ‘}

}

#定义发送信息函数

function SendMsg(){

if [ $1 -ge 3 ];then

RETVAL=1

NOW_TIME=$(date +"%Y-%m-%d %H:%M:%S")

SUBJECT_CONTENE="$2 is error,${NOW_TIME}."

echo -e ${SUBJECT_CONTENE}|tee ${LOG_FILE}

#发送邮件报警

Mail ${SUBJECT_CONTENE}

#发送微信报警

#for $weixin in $(cat $path/weixin_user.txt)

#do

curl --data-ascii "$(WeiXin)" $PURL

printf ‘

echo "over!"

# done

else

echo "http://$2 is ok"

RETVAL=0

fi

return $RETVAL

}

#定义主函数

function main(){

UrlList

for url in $(cat $path/domain.list)

do

CheckUrl $url

SendMsg $? $url

done

}

main

以用户组的形式发送信息,Shell代码如下:

cat web_server_group.sh

#!/bin/bash

#定义脚本存放路径

path=/tmp/scripts

#定义邮件列表,以空格隔开

MAIL_GROUP="[emailprotected]"

#定义日志路径

LOG_FILE="/tmp/scripts/web_check.log"

###send message from weixin for monitoring###

CropID=‘wwxxxxxxxxx8061‘

Secret=‘m-v-xxxxxxxxxxxxxxxXmQMfw‘

GURL="https://qyapi./cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"

Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F " ‘{print $10}‘)

PURL="https://qyapi./cgi-bin/message/send?access_token=$Gtoken"

#创建目录

[ ! -d "$path" ] && mkdir -p $path

#定义URL列表函数

function UrlList(){

cat >$path/domain.list<

/wutengfei

/wutf

http://192.168.246.171

EOF

}

#定义检查URL函数

function CheckUrl(){

#初始化失败次数为0次

FAILCOUNT=0

#检查3次,定义for循环

for ((i=1;i<=3;i++))

do

#定义具体的访问URL命令,不输出信息

wget -T 5 --tries=1 --spider $1 >/dev/null 2>&1

if [ $? -ne 0 ];then

let FAILCOUNT+=1

else

##返回值是0,则表示访问URL成功,跳出for循环,不做3次检测了

break

fi

done

##将失败次数作为返回值,返回函数外的脚本中

return $FAILCOUNT

}

#定义邮件函数

function Mail(){

local SUBJECT_CONTENT=$1

for MAIL_USER in $(echo $MAIL_GROUP)

do

#发送邮件

mail -s "${SUBJECT_CONTENT}" ${MAIL_USER} < ${LOG_FILE}

done

}

#定义微信函数

function WeiXin(){

local int AppID=1000002 # 企业号中的应用id

#local UserID="${cat $path/weixin_user.txt}" # 部门成员id,企业微信中定义的微信接收者

#local UserID="@all" # 企业微信APP中的全部报警用户

local PartyID=4 # 部门id,定义了范围,组内成员都可接收到消息

local Msg=$(cat ${LOG_FILE}) # 过滤出企业微信中传递的第三个参数

printf ‘{

printf ‘"touser": "‘"$UserID"","

"

printf ‘"toparty": "‘"$PartyID"","

"

printf ‘"msgtype": "text",

printf ‘"agentid": "‘$AppID‘",

printf ‘"text": {

##printf ‘"content": "‘$Msg‘"

printf ‘"content": "‘"$Msg"""

"

printf ‘},

printf ‘"safe":"0"

printf ‘}

}

#定义发送信息函数

function SendMsg(){

if [ $1 -ge 3 ];then

RETVAL=1

NOW_TIME=$(date +"%Y-%m-%d %H:%M:%S")

SUBJECT_CONTENE="$2 is error,${NOW_TIME}."

echo -e ${SUBJECT_CONTENE}|tee ${LOG_FILE}

#发送邮件报警

Mail ${SUBJECT_CONTENE}

#发送微信报警

#for $weixin in $(cat $path/weixin_user.txt)

#do

curl --data-ascii "$(WeiXin)" $PURL

printf ‘

echo "over!"

# done

else

echo "http://$2 is ok"

RETVAL=0

fi

return $RETVAL

}

#定义主函数

function main(){

UrlList

for url in $(cat $path/domain.list)

do

CheckUrl $url

SendMsg $? $url

done

}

main

报警测试

微信报警截图

邮件报警截图

设置定时任务

# crontab -l

*/3 * * * * /bin/sh /tmp/web_server_group.sh &>/dev/null # 每隔三分钟检查一次

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。