题目要求:
脚本实现输出机器信息
- 将本机的网卡的IP地址和MAC地址截取出来,输出到/root/nic
- 将本机的磁盘使用情况截取出来 输出到 /root/disk
- 判断系统空间使用的情况,如果 / 使用率大于30% 则删除 /tmp 的内容
[root@centos-jifu-vm shell]# vim systemces.sh
#!/bin/bash
#This shell script is for monitoring diskUsage&IP&MAC
MAC=`ip addr | awk NR==8 | awk '{print $2}'`
IP=`ifconfig | grep -E "\<([0-9]{1,3}\.){3}([0-9]{1,3})\>" | grep -v 127.0.0.1 | awk '{print $2}'` #无法应对多网卡地址遴选
DiskUsage=`df -h | grep -v Filesystem | awk '{print $1,$5}'` #列出分区,以及分区使用率
RootZoneUsage=`df -h | grep sda | awk '{print $5}'` #列出根分区的使用率
echo "$IP $MAC" > /root/nic #将IP地址与MAC地址写入文件
echo "$DiskUsage" > /root/disk #将分区使用率写入文件
echo "$RootZoneUsage" > ./file #将根分区的使用率写入一个已创建的文件中,使用相对路径
RootUsage=`sed 's/%//g' ./file` # 使用sed将使用率的百分号过滤掉
if [ $RootUsage -gt 30 ] #最头疼的一句,明明就拿使用率比较,结果-lt -gt不能使用百分号比较只能划百分号为整
then
cat /dev/null > /tmp/
else
echo "The Disk Usage is less than 30%, you do not need care "
fi
感悟:
这个shell练习题耗费掉我大量的时间,对于if判断中的-lt等比较不知道,对于文本字符的要求(必须为整数)
过滤%的时候,使用sed必须目标为文本,而不能是字符,我想直接把9%写到那里过滤,发现频频报错
还有一个 对于IP和MAC地址的截取 感觉是强行凑合出来的 并不适用于所有机器