shell习题_4

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

 

转载于:https://my.oschina.net/yuanhaohao/blog/2991597

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值