监控服务器ssh登录,并发送报警邮件

最近想监控下云主机的ssh登录情况,所以开始写ssh登录报警监控。实现方式并不难。

一:邮箱申请开启SMTP

在邮箱中选择“设置”----->“账户”

在如下图处开启POP3/SMTP服务,并生成授权码。

二:修改相关参数

登录要进行ssh登录监控的服务器,在/etc/ssh创建"sshrc"文件:

#!/bin/bash
#获取登录者的用户名
user=$USER
#获取登录者的IP地址
ip=${SSH_CLIENT%% *}
#获取登录的时间
time=$(date +%F%t%k:%M)
#服务器的IP地址
hostname=$(hostname)
echo "content=$time,$user,$ip,$hostname" > log

python /etc/ssh/testEmail.py   "$time" "$user" "$ip" "$hostname"

并在如上自定义路径中创建“testEmail.py”文件。

添加颜色部分,按邮箱,授权码,以及相关术语进行修改。

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import smtplib
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import sys

def send_mail(dtime,duser,dip,dhostname):
	#基础信息
	# from_addr = input("From:")
	from_addr = "[email protected]"
	password = "授权码"
	#to_addr = from_addr
	to_addr = "[email protected]"
	# password = raw_input("Password:")
	# to_addr = input("To:")

	def _format_addr(s):
    		name, addr = parseaddr(s)
    		return formataddr((Header(name, ‘utf-8‘).encode(), addr))

	smtp_server = "smtp.qq.com"
        mimetex = ‘您的机器:‘,dhostname,‘,于:‘,dtime,‘,被IP:‘,dip,‘以账号‘,duser,‘进行登录,请确认是否为公司员工。‘
	#构造邮件
	msg = MIMEText(‘‘.join(mimetex), ‘plain‘, ‘utf-8‘)
	msg[‘From‘] = _format_addr("yaohong")
	msg[‘To‘] = _format_addr("[email protected]")
	msg[‘Subject‘] = Header("来自yaohong", ‘utf-8‘).encode()
	#发送邮件
	server = smtplib.SMTP_SSL(smtp_server, 465)
	server.set_debuglevel(1)
	server.login(from_addr, password)
	server.sendmail(from_addr, [to_addr], msg.as_string())
	server.quit()

if __name__ == "__main__":
    send_mail(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4])

三:登录检测

 安装完后,再次进行ssh登录该服务器会收到邮件如下图,则表示ssh被监控成功。

  

原文地址:https://www.cnblogs.com/yaohong/p/8379252.html

时间: 2024-10-12 20:33:49

监控服务器ssh登录,并发送报警邮件的相关文章

使用Zabbix服务端本地邮箱账号发送报警邮件的部署记录

邮件报警有两种情况:1)Zabbix服务端只是单纯的发送报警邮件到指定邮箱,发送报警邮件的这个邮箱账号是Zabbix服务端的本地邮箱账号(例如:[email protected]),只能发送,不能接收外部邮件.2)使用一个可以在互联网上正常收发邮件的邮箱账号(例如:[email protected]),通过在Zabbix服务端中设置,使其能够发送报警邮件到指定邮箱.上面第2中使用外部邮箱发送报警邮件之前已经介绍了:分布式监控系统Zabbix-3.0.3-完整安装记录(5)-邮件报警部署.下面说下

linux服务器发送报警邮件

由于公司业务需要,领导要求发送报警邮件,在我的认知中应该是有两种,一种是将服务器搭建为邮件服务器,这种可以使用postfix或者sendmail等,但是配置相对比较复杂,对运维人员水平要求也比较高.其实完全没有必要这么做.这就说到我们的第二种方法了,可以调用第三方邮件服务器.我们公司有自己的邮件服务器,所以直接新建了个账户,然后在这台需要发送的服务器上进行配置就可以了.服务器是centos6.8的系统.配置是在/etc/mail.rc这个文件中配置的.主要有以下几个配置项需要调整 [[email

zabbix生产场景配置发送报警邮件

创建发送邮件的脚本: [[email protected] ~]# cd /usr/lib/zabbix/alertscripts/ [[email protected] alertscripts]# cat email.sh #!/bin/bash email_File=/tmp/email.log #在/tmp目录里面创建email.log文件 function main(){         echo"$3" >$email_File #把邮件内容传入到email.log文

Centos 6.5 服务器下面配置邮件客户端 发送报警邮件

以Centos 系统为例,确保服务器可以正常连接外网 Centos 6.5 下面默认 安装 postfix 查看 rpm -qa | grep postfix postfix-2.6.6-2.2.el6_1.x86_64 配置邮件客户端 set [email protected] set smtp=smtp.163.com set [email protected] set smtp-auth-password=UserPassword set smtp-auth=login 发送测试邮件  e

Python3 实现简易ping监控并发送报警邮件

Python3 实现简易ping监控并发动报警邮件 1.实现原理通过ping命令结果获取丢包率和延时情况,当丢包率和延时达到预设值时,将结果作为邮件内容,并发送邮件 2.邮件是用smtplib和email实现发送的 3.目前脚本有个小问题就是:我打开文件,循环读,当读第一行时,我执行ping,获取结果,把结果写到一个文件里,同时判断是否达到预设值,如果达到,就把结果加到邮件内容,就这样一直循环,当把文件读完,然后关闭这两个文件,再发送邮件.总学得有点问题,应该将结果存到一个列表,一次性写入.算了

python脚本发送报警邮件

最近在搞把nagios报警邮箱换到163.sina这种免费邮箱上边,之前用过msmtp搞过也可以发送邮件,现在估计是他们系统都升级了,只能使用TSL加密连接,而msmtp怎么配置都配不通,无奈只能转移战术,正好最近在学习Python,也不知道从哪瞄到过有个email的模块,所以准备试试自己搞个脚本. (新手,无编程基础,希望多多指教) -----2016.1.4 修改---- 前提: 更改nagios/etc/object/command.cfg里发送邮件的command配置,例如我这样: # 

关于zabbix发送报警邮件25端口不通问题的解决方案

写这篇文章的目的不是别的,今年在阿里云的centos7上安装了zabbix3以上版本,我可以直接说明不是zabbix最新版本,安装路上根据之前总结文档一顿操作,ok,一切正常,zabbix服务器正常启动,界面也正常,直至报警调试自带mail报警,发现并没有收到邮件. 于是手动测试邮件发送,发现失败了,....失败了.然后各种百度找资料,一瞬间发现很多文档,最多的就说阿里云禁用了邮件服务器的25端口,而mail默认走25.            既然发现问题,那就是解决问题,于是各种尝试改配置文件

定时监控所有服务器的端口,如果挂起,发送报警邮件

功能:1:ping所有网内机器的IP地址,如果不通,发送报警 2:检测网内所有机器的服务端口,如果不通,发送报警 #!/bin/bash ##读取IP列表,测试ip的某个端口## while read ip1do ping -c 2 $ip1 >> /dev/null 2>&1 if [ $? -eq 0 ]; then echo "************************"echo "ping $ip1 ,ok" elseecho

编写监控脚本,监控集群内所有服务存活状态,内存、磁盘剩余率检测,异常则发送报警邮件

发送邮件Python程序 #!/usr/bin/python # -*- coding: UTF-8 -*- import sys import smtplib import email.mime.multipart import email.mime.text server = 'smtp.163.com' port = '25' def sendmail(server,port,user,pwd,msg): smtp = smtplib.SMTP() smtp.connect(server,