• 幕客老师召集小伙伴
  • python自动化运维项目实战
  • nginx从入门到实战
  • 阿里云与Centos7实战

[脚本]linux用户登录邮件提醒脚本

出于安全的考虑,我们对于有的服务器,必须要采用更高级别的安全策略。比如:当系统有用户登录时能及时发出提醒邮件。

今天考虑用脚本的方式,实现了一个类似的功能,经过测试开算不错,需要注意如下:

一、Linux系统中有一个/etc/bashrc文件,当登录时及每次打开新的shell时,该文件被读取并且执行。所以,我们写入一个如下的脚本:

1
2
#vim /etc/bashrc
/bin/sh /opt/work/record_loging_user.sh

二、record_loging_user.sh shell脚本的作用时纪录登录用户的用户名、UID、还有登录IP等相关环境变量,并且出发发送邮件脚本(pymail.py)

1
2
3
4
5
6
7
8
9
#!/bin/sh
#Record the login user's informations
export PATH='/root/.rbenv/shims:/root/.rbenv/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/opt/app/git/bin'
tdate=`date +%F_%T`
contents="DATE:$tdate UID:$UID USERNAME:$USER IP:$SSH_CONNECTION"
/usr/bin/python /opt/work/pymail.py <<!
$contents
exit
!

三、pymail.py脚本用于通过163的邮箱发送报警邮件。需要注意如下:

1、导入MIMEText、MIMEMultipart模块时,需要通过如下方式导入。否则由于老版本python写法的原因,会报错“ImportError: No module named mime.text

from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart

2、用raw_input的方法能够读取整个控制台的输入,这样的做法不必要用python中参数赋值的方式去实现。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/env /opt/python2.7/bin/python
#-*- coding: utf-8 -*-
import sys
import os
import re
import socket
import smtplib, mimetypes
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
#from email.mime.text import MIMEText
#if len(sys.argv) != 2:
#    sys.exit("Input your E-mail message")
html_content=raw_input()
 
msg = MIMEMultipart()
msg['From'= "send@163.com"
mailadd = 'iaskjob@163.com'
msg['To'= ";".join(mailadd)
msg['Subject'= "Mail Alarm!-----"
 
if len(html_content) == 0:
    txt = MIMEText("NULL,This a test email")
else:
    txt = MIMEText(html_content,'html')
msg.attach(txt)
 
smtp = smtplib.SMTP()
smtp.connect('smtp.163.com')
smtp.ehlo()
smtp.set_debuglevel(0)
smtp.login( 'send@163.com','sendpasswd')
r=smtp.sendmail('renaizhu3@163.com',mailadd, msg.as_string())

 

[脚本]linux用户登录邮件提醒脚本

Pingbacks已打开。

引用地址

暂无评论

发表评论