脚本准备

  • 0Batch_Check.sh
  • 1port_check.sh
  • 2wechat_bot_alert.sh
  • CheckList

CheckList

#支持大/小写
10.1.1.5 Udp 53
127.0.0.1 Tcp 1234

0Batch_Check.sh

#!/bin/sh
while read LineX
do
#echo $LineX
./1port_check.sh $LineX
done < ./CheckList

1port_check.sh

#!/bin/sh
#TCP UDP port check and alert
#useage: port_check.sh IP PROTOCOL PORT input_IP=$1
input_PROTOCOL=$2
input_PORT=$3 #将大小写转成临时小写
tmp_PROTOCOL=`echo ${input_PROTOCOL} | tr '[A-Z]' '[a-z]'`
#echo $tmp_PROTOCOL if [[ "${tmp_PROTOCOL}" == "tcp" ]]; then
abbreviate_PROTOCOL="S"
elif [[ "${tmp_PROTOCOL}" == "udp" ]]; then
abbreviate_PROTOCOL="U"
else
echo "Unknown PROTOCOL" && exit 1
fi /usr/bin/nmap ${input_IP} -s ${abbreviate_PROTOCOL} -p ${input_PORT} |grep "$input_PORT/$tmp_PROTOCOL open" &>/dev/null
if [[ $? == 0 ]]
then
echo "${input_IP} ${tmp_PROTOCOL} Port ${input_PORT} Check OK"
else
#A调用自建告警应用
## ./2wechat_app_alert.py 5 "WarningIP: ${input_IP}" "DES: ${tmp_PROTOCOL} Port ${input_PORT} is DOWN!"
#B调用群机器人
./2wechat_bot_alert.sh "Warning!!! ${input_IP} : ${tmp_PROTOCOL} Port ${input_PORT} is DOWN!"
fi

2wechat_bot_alert.sh

#!/bin/sh
#useage: bot_alert.sh a b c ... /usr/bin/curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxx' \
-H 'Content-Type: application/json' \
-d '
{
"msgtype": "text",
"text": {
"content": "'$*'",
"mentioned_list":["ZhangSan","LaoLiu"]
}
}'

加到定时任务中

crontab -l

*/10 * * * * cd /data/Script/ && ./0Batch_Check.sh &>/dev/null

参考资料

学了一招:在json格式中引用shell变量的技巧,实际上是把 -d 后面的data分为了三个部分:

'{"msgtype...content": "' 加上 $* 再加上 '","mentioned_...}' 。

感谢博主:https://jaminzhang.github.io/shell/the-problem-of-curl-commit-json-data-include-shell-variables/

企业微信群机器人手册:https://work.weixin.qq.com/api/doc/90000/90136/91770

UDP端口检查告警SHELL脚本(企业微信版机器人版)的更多相关文章

  1. Linux命令行与shell脚本编程大全.第3版(文字版) 超清文字-非扫描版 [免积分、免登录]

    此处免费下载,无需账号,无需登录,无需积分.收集自互联网,侵权通知删除. 点击下载:Linux命令行与shell脚本编程大全.第3版 (大小:约22M)

  2. 《Linux命令行与shell脚本编程大全 第3版》创建实用的脚本---11

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  3. 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---47

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  4. 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---57

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  5. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---57

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  6. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---56

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  7. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---55

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  8. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---54

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  9. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---53

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

随机推荐

  1. NOIP 模拟二 考试总结

    SDOI2015 排序 今天看到这道题,没有一点思路,暴力都没的打...还是理解错题意了,操作不同位置不是说改不同的区间,而是不同操作的顺序...考场上如果知道这个的话最少暴力拿一半啊,因为正解本来就 ...

  2. HTML选择器的四种使用方法

    选择器<style> 为了让.html代码更加简洁,这里引入选择器style 本文总共介绍选择器的四种使用方式 一.选择器的四种形式 1.ID选择器 id表示身份,在页面元素中的id不允许 ...

  3. javascriptRemke之深入迭代

    javascriptRemke之深入迭代 前言:"迭代"意为按照顺序反复多次执行一段程序,ECMAscript6中新增了两个高级特性:迭代器与生成器,使用这两个特性能更高效地实现迭 ...

  4. Conda 创建和删除虚拟环境

    1.检验当前conda的版本 conda -V C:\Users>conda -V conda 4.10.1 2.conda 常用的命令 查看已有的虚拟环境 C:\Users>conda ...

  5. Java初步学习——2021.10.11每日总结,第六周周一

    (1)今天做了什么: (2)明天准备做什么? (3)遇到的问题,如何解决? 今天继续学习菜鸟教程Java实例 字符串 9.字符串小写转大写--toUpperCase方法 public class Ma ...

  6. spring提供的可拓展接口

    接口:SmartLifecycle(https://www.jianshu.com/p/7b8f2a97c8f5)

  7. Vim合并行

    日常常用到多行合并的功能,记录如下: 第一种, 多行合并成一行,即: AAAAABBBBBCCCCC 合并为:AAAAA BBBBB CCCCC 方法1: normal状态下 3J 其中的3是范围,可 ...

  8. Object.create 和 Object.assign

    Object.assign(target, ...source) 1.Object.assign方法只会拷贝源对象自身(不包括原型)的并且可枚举的属性到目标对象,使用源对象的get和目标对象的set, ...

  9. window系统上实现mongodb副本集的搭建

    一.问题引出 假设我们生产上的mongodb是单实例在跑,如果此时发生网络发生问题或服务器上的硬盘发生了损坏,那么这个时候我们的mongodb就使用不了.此时我们就需要我们的mongodb实现高可用, ...

  10. Azure File Storage(一)为本地机器配置网络磁盘

    一,引言 本地机器硬盘空间不够了怎么办?重要文件不想存储在本地硬盘怎么办?加外接移动硬盘:或者换大容量存储设备,都是解决方案.但是每次都得携带,还得考虑当前设备是否支持外接硬盘. 1,这个时候 Win ...