linux centos ssh登陆邮箱提醒功能脚本_2019_lcf

 
实现功能:单个ip登陆当天只提醒一次,跳过白名单发送提示邮件。效果如下

linux centos ssh登陆邮箱提醒功能脚本_2019_lcf_第1张图片

 设置linux 邮箱发邮件功能可能查看我的这篇文档:https://blog.csdn.net/cbuy888/article/details/88287883

[root@ald8 ~]# vim /etc/profile       //编辑/etc/profile,在最后面添加下面代码即可(一定要编辑/etc/profile这个文件才有效果)

#------------用户登陆提醒
aipurl="/usr/local/dltx.ip"
[ ! -f "$aipurl" ] && :>$aipurl
ipin=`echo $(w|sed -n '3p'|awk '{print$3}')`
AIP=(`cat $aipurl`)
email=([email protected] [email protected])
WhiteList=(192.168.1.1 192.168.2.1)
wTrue="false"
iTrue="false"

# 判断时间,如果时间不是当天的则清除AIP数据
if [ ! $ADATE ];then
    ADATE=`date +%Y%m%d`
else
    temp=`date +%Y%m%d`
    if [ $ADATE != $temp ];then
        :>$aipurl   
    fi  
fi

# 循环判断当前IP是否在集合里
for ip in ${AIP[@]}
do
    if [ $ipin == $ip ];then
        iTrue="true"
    fi  
done

# 循环判断ipin是否在白名单里
for ip in ${WhiteList[@]}
do
    if [ $ipin == $ip ];then
        wTrue="true"
    fi
done

# 如果不在白名单里并且当天还未发送过登陆提示邮件的才进行邮件发送
if [ $iTrue == "false" -a $wTrue == "false" ];then
    content=`echo "连接服务器用户名:$(whoami)  服务器主机名: $(hostname)  服务器IP: $(curl ipin.ald8.cn -s) ||  登陆时间:$(date) 客户端口IP: $(w|sed -n '3p'|awk '{print$3}')"`
    temp=`date +%s`
    echo $ipin >> $aipurl
    for y in ${email[@]}
    do
            echo $content | mail -s "登陆提示$temp(server ip address: $(curl ipin.ald8.cn -s))" $y
    done
fi

补充说明:

[ ! -f "$aipurl" ] && :>$aipurl     //用于连续记录当天所有不同ipin的值

ipin=echo $(w|sed -n '3p'|awk '{print$3}')  //获取登陆者ip
email=([email protected] [email protected])     //发送提示邮件地址(空格做间隔)
WhiteList=(192.168.1.1 192.168.2.1)    //白名单ip(空格做间隔)
wTrue=“false”       //true表是白名单内的ip,false表示不是白名单内的ip.
iTrue="false"        //true表示当天已经发送过提示邮件,false表示还未发送过邮件的ipin

 

你可能感兴趣的:(ssh,脚本)