工作中服务器过多,为防止服务器遭受暴力破解,因此加入了一个非工作日服务器登录的提示信息。
将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
登录服务器后,效果如下截图:
后续如果有需要可以加入钉钉告警,方法类似。