我是靠谱客的博主 霸气猫咪,最近开发中收集的这篇文章主要介绍linux 服务器 告警声,服务器登录报警脚本,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

## 服务器登录报警脚本的编写

>[success]要实现的功能,就是当有用户登录服务器时,会自动向指定邮箱发送信息

### 服务器登录报警设置

~~~

#================服务器登录报警脚本============

#!/bin/bash

#登录报警

mkdir /root/tmp &>/dev/null

echo "===================登录用户=======================">>/root/tmp/1.txt

echo "$(whoami)">>/root/tmp/1.txt

echo "===================当前在线用户===================">>/root/tmp/1.txt

echo "$(who)">>/root/tmp/1.txt

echo "===================登录时间=======================">>/root/tmp/1.txt

echo "$(date)">>/root/tmp/1.txt

echo "====================登录IP========================">>/root/tmp/1.txt

echo $(w|sed -n '3p'|awk '{print$3}')>>/root/tmp/1.txt

IP=$(ifconfig eth1 | grep "inet addr" | awk '{ print $2}' | awk -F: '{print $2}')

mail -s "$(date)[IP:$IP]服务器登录报警"yfketang@163.com

rm -f /root/tmp/1.txt

~~~

当用户登录时执行,需要把该脚本放入 /etc/bashrc中,这样当有用户登录服务器时,就会自动发送邮件

可以同时发送到139邮箱一份,因为139邮箱可以设置免费短信提醒功能。

>[danger]在这里要注意,登录报警脚本的位置,这个非常重要!这个脚本的位置一定不要放在/root目录下,否则的话非root用户登录时,就没有权限执行该脚本。最好把该本设置为755权限。

脚本写好后,加入定时任务,执行了,但是获取不到ip地址,ifconfig 和 iptables 没有正常执行:提示如下错误:

~~~

/var/www/data/autosendmail.sh: line 13: ifconfig: command not found

/var/www/data/autosendmail.sh: line 14: iptables: command not found

/var/www/data/autosendmail.sh: line 15: iptables: command not found

~~~

因为没有使用绝对路径,改成/sbin/ifconfig后就好了。(但脚本的通用性就可能出现问题了 —_—! )

应该是定时任务时没有环境变量所至。

### 扩展内容

#### 磁盘监控报警脚本

>[success]定时判断磁盘可用空间大小,当它小于指定阀值时,向管理者邮箱发送报警邮件。

### 本脚本的关健点

#### 1. 获取磁盘可以用空间大小

>[info]通过df -P命令,获取到磁盘情况,然后使用sed,awk,grep等取出所需要的数据。

执行df -P -h命令后,运行结果如下:要判读是根目录的可用空间的百分比,即红框内的值

![](https://box.kancloud.cn/c3008da3adf60772dc0c75f6634d8c38_785x141.png)

取出48%的方式如下:

~~~

# 这样就可以获取到剩余空间的百分比,取值的方式,不至下面这一种方法

[root@localhost ~]# df -P -h |sed -n '//dev/sda1/p'|awk '{print $5}'|awk -F "%" '{print $1}'

~~~

#### 2. 判断是否符合报警条件

在这里会用到if-then语句

命令格式:

~~~

if command

then

commands

fi

~~~

>[danger]if-then语句是不能测试命令退出状态码之外条件的,所以linux中的if-then语句不能直接判断数值比较等。但是linux中提供了tset命令,可以使用它来测试不同条件的用途。

命令格式如下:

~~~

if test condition

then

commands

fi

~~~

bash shell中还提供了另一种条件测试方法,无需在if-then语句中声明test命令。

~~~

if [ condition ] # 中括号内,条件语句的两边要留一个空格

then

commands

fi

~~~

#### 脚本编写

>当根目录可用空间不足50%时,给出警告

~~~

#! /bin/bash

free=$(df -P -h |sed -n '//dev/sda1/p'|awk '{print $5}'|awk -F "%" '{print $1}')

if [ $free -lt 50 ]

then

echo "可用空间为:$free%"| mailx -s "磁盘已满" 576617109@qq.com >/dev/null

fi

~~~

最后

以上就是霸气猫咪为你收集整理的linux 服务器 告警声,服务器登录报警脚本的全部内容,希望文章能够帮你解决linux 服务器 告警声,服务器登录报警脚本所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部