Linux 用户登陆服务器微信告警
作者:
秒速五厘米
在服务器运维中,很多时候我们不可能24小时盯着屏幕上的各种参数及警告值。于是配置各种告警方式成了我们及时掌握服务器各种状况的有力工具。由于SSH又是最直击系统的服务,为了保证ssh的安全,我们需要对ssh进行监控。对登陆的每一个用户都进行监控,以确保系统的安全。
在某些环境中我们需要对ssh登陆添加一个告警,比如跳板机服务器,或者开放了外网的机器,以判断机器是否有密码被破解的问题。
效果图如下
效果图如下
#!/bin/bash # #使用方法 sh ./send_message.sh "发送内容" #如 sh ./send_message.sh "测试环境,正在更新" #保存要发送人员的账号,在通讯录可获取,多个人员之间使用空格分隔,以下为展示数据 user="0001" #企业微信ID:企业微信管理界面-’我的企业‘页面中获取 corpid="wwf7a2e516121bb898" #应用秘钥:在‘自建应用’-‘创建应用’-‘应用管理’中获取 corpsecret="8wC8WWzDBXl-OdZFoZ8kG2dmslgCjduoKRUqOZY7TE" #企业应用ID:在'自建应用'-'创建应用'-'应用管理'中获取 agentld=1000005 #------------------------以上变量需要自行修改----------------------------------- #保存信息内容变量 msg='请检查服务器登录用户:\n主机名: '`hostname`'\n主机IP: '`ifconfig eth0|awk -F '[ :]+' 'NR==2 {print $3}'`'\n登录用户: '`whoami`'\n登录IP: '`who am i |awk -F '[()]' '{print $2}'`'\n登录时间: '`date '+%Y-%m-%d-%H:%M:%S'`'' #curl -s 静默模式,就是不显示错误和进度 A=`curl -s https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$corpid\&corpsecret=$corpsecret` #解析json格式 并获取access_token值 token=`echo $A | jq -c '.access_token'` #去除变量值两边的双引号 token=${token#*\"} token=${token%*\"} #请求地址 URL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$token" for I in $user;do #发送的JSON内容 JSON="{\"touser\": \"$I\",\"msgtype\": \"text\",\"agentid\": \"$agentld\",\"text\": {\"content\": \"$msg\"},\"safe\":0 }" #以POST的方式请求 curl -d "$JSON" "$URL" >/dev/null 2>&1 done exit 0
脚本中还涉及jq命令,这里我们安装一下
yum install -y jq
在完善脚本之后,我们需要将脚本放置在/etc/profile
这样用户在登陆的时候就会发送(前提是服务器可以访问外网,就是可以ping通百度)
vim /etc/profile /bin/bash /root/wechat.sh
如果报错如:
{"errcode":60020,"errmsg":"not allow to access from your ip, hint: [1657282198354963381216266], from ip: 11x.xx.xx.x16, more info at https://open.work.weixin.qq.com/devtool/query?e=60020"}
查看服务日志,会提示出相应的IP 然后在 企业微信后台应用管理里面 >配置可信IP>配置相应的ip即可
好像第一个应用不用设置,没有设置选项,第二个应用就有,所以在没有找到这个选下的情况下,再去主持多一个应用看看,反正我就是这样的情况