Linux 从多个结果中grep一个单词
我正在尝试编写一个shell脚本来监视文件系统。脚本逻辑是, 对于来自df-H命令的每个文件系统,读取文件系统阈值文件并获得临界阈值、警告阈值。根据情况,它将发送通知 这是我的剧本:Linux 从多个结果中grep一个单词,linux,bash,shell,Linux,Bash,Shell,我正在尝试编写一个shell脚本来监视文件系统。脚本逻辑是, 对于来自df-H命令的每个文件系统,读取文件系统阈值文件并获得临界阈值、警告阈值。根据情况,它将发送通知 这是我的剧本: #!/bin/sh df -H | grep -vE '^Filesystem|none|boot|tmp|tmpfs' | awk '{ print $5 " " $6 }' | while read $output do echo $output fsuse=$(echo $output | awk '{ pr
#!/bin/sh
df -H | grep -vE '^Filesystem|none|boot|tmp|tmpfs' | awk '{ print $5 " " $6 }' | while read $output
do
echo $output
fsuse=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 )
fsname=$(echo $output | awk '{ print $2 }' )
server=`cat /workspace/OSE/scripts/fs_alert|grep -w $fsname|awk -F":" '{print $2}'`
fscrit=`cat /workspace/OSE/scripts/fs_alert|grep -w $fsname|awk -F":" '{print $3}'`
fswarn=`cat /workspace/OSE/scripts/fs_alert|grep -w $fsname|awk -F":" '{print $4}'`
serenv=`cat /workspace/OSE/scripts/fs_alert|grep -w $fsname|awk -F":" '{print $5}'`
if [ $fsuse -ge $fscrit ]; then
message="CRITICAL:${server}:${serenv}:$fsname Is $fsuse Filled"
_notify;
elif [ $fsuse -gt $fswarn ] && [ $fsuse -lt $fscrit ]; then
message="WARNING: $fsname is $fsuse Filled"
_notify;
else
echo "File system space looks good"
fi
done
以下是/workspace/OSE/scripts/fs\u警报:
我的问题是,当脚本试图从/u01文件系统的文件中获取crit_va,warn_val时,我得到了三个结果。如何一次获取/筛选一个文件系统
$ df -H|grep /u01
/dev/mapper/datavg-gridbaselv 53G 12G 39G 24% /u01/app
/dev/mapper/datavg-rdbmsbaselv 53G 9.6G 41G 20% /u01/app/oracle
/dev/mapper/datavg-oemagentlv 22G 980M 20G 5% /u01/app/emagent
处理这个问题的最佳方式是什么?
我需要基于文件系统的逻辑还是挂载在文件系统上的逻辑。不要重新发明轮子。有一些工具可以为您的客户实现这一点。试试monit,例如:
好的,monit很好,如果您需要另一种选择,请看一看——df实用程序的包装器,以验证每个分区是否超过阈值。至少它看起来非常接近于您开始在bash脚本中实现的内容,但它是用perl编写的,并且具有整洁简单的安装布局。随时可用的工具 -问候
PS披露者-我是工具作者您想要的输出是什么样子的?读取输出时不应该是吗?我需要检查每个文件系统使用的空间,并比较使用的空间是否大于/workspace/OSE/scripts/fs\u警报中定义的阈值如果任何文件系统使用的空间超过文件上定义的阈值,则发送警报。
$ df -H|grep /u01
/dev/mapper/datavg-gridbaselv 53G 12G 39G 24% /u01/app
/dev/mapper/datavg-rdbmsbaselv 53G 9.6G 41G 20% /u01/app/oracle
/dev/mapper/datavg-oemagentlv 22G 980M 20G 5% /u01/app/emagent