工作中服务器过多,为防止服务器遭受暴力破解,因此加入了一个非工作日服务器登录的提示信息。

将sign.sh和sign.py两个脚本放在服务器的/etc/profile.d/目录,服务器被登录的时候自动执行sign.sh触发sign.py,然后发送信息至企业微信。

sign.py脚本内容如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import time
import requests
import json
import os,sys
import traceback
import logging
import socket
import datetime


def send_wx(msg):
    Secret = "企业微信的secret"
    corpid = '企业微信corpid'
    url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={}&corpsecret={}'
    AGENTID = '应用的agentId'
    getr = requests.get(url=url.format(corpid,Secret))
    access_token = (getr.json())["access_token"]
    data = {
       "touser" : "企业微信用户名",   # 向这些用户账户发送
       # "toparty" : "PartyID1|PartyID2",   # 向这些部门发送
       "msgtype" : "text",
       "agentid" : 1000006,                       # 应用的 id 号
       "text" : {
           "content" : msg
       },
       "safe":0
    }
    r = requests.post(url="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={}".format(access_token),
                  data=json.dumps(data))
    print(r.json())

def get_login_msg():
    server_ip = os.popen("ifconfig |grep -v 172.17.0.1 |grep -v lo  |grep -v cn |  grep inet | grep netmask | grep broadcast | awk '{print $2}' | sed -n '1p'").readlines()[0]
    login_ip = os.popen("last -1 |grep pts|awk '{print $3}'").readlines()[0]
    now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    login_msg = '您好,服务器有新的登录!' + '\n' +  '登录时间:'  + now +  '客户端IP:' + login_ip +  '服务器IP:' + server_ip  +'【运维监控系统】'
    return login_msg

msg = get_login_msg()
send_wx(msg)

 

sign.sh脚本内容如下:

#!/bin/bash
/usr/bin/python /etc/profile.d/sign.py

 

登录服务器后,效果如下截图:

python服务器登录信息发送至微信_python 微信告警

 

后续如果有需要可以加入钉钉告警,方法类似。