概述
## 服务器登录报警脚本的编写
>[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 服务器 告警声,服务器登录报警脚本所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复