1、写个shell脚本,看看你的Linux的系统中是否有自定义用户(普通用户),若是有,一共有几个?
首先需要区分当前系统是Centos 6 还是 Centos 7; centos 7的普通用户从1000开始, centos 6 普通用户是从 500 开始;
cat /etc/redhat-release |awk -F 'release ' '{print $2}' |cut -d '.' -f1
然后在通过 awk 来获取 /etc/passwd 的第三行大于1000的用户;
[root@localhost_002 shell100]# cat 16.sh
#!/bin/bash
n=`cat /etc/redhat-release |awk -F 'release ' '{print $2}'|cut -d '.' -f1`
case $n in
7)
uid=`awk -F ':' '$3>=1000 {print $1}' /etc/passwd|wc -l`
if [ $uid -eq 0 ]
then
echo "系统没有普通用户"
else
echo "系统有普通用户$uid个;"
fi
;;
6)
uid=`awk -F ':' '$3>=1000 {print $1}' /etc/passwd|wc -l`
if [ $uid -eq 0 ]
then
echo "系统没有普通用户"
else
echo "系统有普通用户$uid个;"
fi
;;
*)
echo "The is buzhengque;"
;;
esac
注释:如上:有一部分内容是重复的,可以写成函数的形式;然后在 case 下掉调用即可;
user()
{
uid=`awk -F ':' '$3>=1000 {print $1}' /etc/passwd|wc -l`
if [ $uid -eq 0 ]
then
echo "系统没有普通用户"
else
echo "系统有普通用户$uid个;"
fi
}
case $n in
7)
user
;;
................................
2、检测磁盘的使用量;检测所有磁盘分区使用率和inode使用率并记录到以当天日期为命名的日志文件里,当发现某个分区容量或者inode使用量大于85%时,发邮件通知你自己。
注意:难点在与如何区别是磁盘分区使用率还是inode使用率,然后分别告警,可使用打标记的方式;
如何过滤分区大于%85的分区;首先用 sed 删除第一行, 然后使用awk来过滤,大于 $5 即利用率大于 85; 要打印 $7 后面是空格;
df |sed '1d' |awk -F ' +|%' '$5>85 {print $7}'
df -i |sed '1d' |awk -F ' +|%' '$5>85 {print $7}'
[root@localhost_002 shell100]# cat 17.1.sh
#!/bin/bash
dir=/tmp/disk
d=`date +%F`
mail=123@123.com
[ -d $dir ] || mkdir $dir
df >> $dir/$d.log
df -i >> $dir/$d.log
df|sed '1d' |awk -F ' +|%' '$5>=30 {print $7}' > $dir/df.tmp
df -i|sed '1d' |awk -F ' +|%' '$5>=85 {print $7}' > $dir/df_i.tmp
n1=`wc -l $dir/df.tmp|awk '{print $1}'`
n2=`wc -l $dir/df_i.tmp|awk '{print $1}'`
tag=0
if [ $n1 -gt 0 ]
then
if [ $n2 -gt 0 ]
then
tag=11
else
tag=10
fi
else
if [ $n2 -gt 0 ]
then
tag=01
else
tag=00
fi
fi
case $tag in
11)
python mail.py $mail "磁盘空间和inode使用率高于85%" "`cat $dir/df.tmp $dir/df_i.tmp|xargs`"
;;
10)
python mail.py $mail "磁盘空间使用率高于85%" "`cat $dir/df.tmp|xargs`"
;;
01)
python mail.py $mail "磁盘inode使用率高于85%" "`cat $dir/df_i.tmp|xargs`"
;;
*)
;;
esac