NFS挂载脚本的代码实现

网络 网络管理
下面我们来对NFS挂载脚本的具体代码进行一下解析。首先我们来了解一下笔者的初衷,之后对于问题的解决再来着重看一下。

今天们主要讲解一下NFS挂载脚本的内容。这个在监控系统中是常见的问题。那么具体的nagios监控脚本是监控NFS是否被挂载上的脚本信息,让们从下文来了解一下吧。先说下写这个NFS挂载脚本的初衷吧,事情还是因为上次网络部调整服务器机柜位置引起的,当时自信满满的认为服务器上已经配置好了自动挂载NFS,所以根本不用担心NFS挂载脚本的情况,当服务器启动恢复后,的nagios给发了一个recovery的邮件,就想当然的认为好了,也就没管。第二天开发人员居然找到,问昨天是不是有两台机器重启了,说是呀,他们就说NFS没有挂载上,当时还很强调说不可能呢,结果手动重启了一下昨天的机器,发现真的没有自动挂载上,让很是郁闷。

没有自动挂载到还不是让人最郁闷,那个已经通过技术问题解决了,郁闷的是有了问题居然不是nagios***时间通知。由于之前使用的是nagios的check_disk这个脚本,在NFS磁盘有问题,不可读写或空间不足的时候给报过警,但经过测试发现,这个脚本只能监控本地磁盘(包括挂载好的NFS)可用性,而不管是否NFS挂载是否正确了,所以才有了今天这个脚本。

脚本名称:check_nfsmount

脚本作用:

1,检查NFS磁盘是否被挂载

2,报告哪些NFS没有被挂载

使用方法:

1,将需要mount的NFS磁盘写入到fstab,如下

# cat /etc/fstab
/dev/VolGroup00/LogVol00 /   ext3defaults,usrquota,grpquota1 1
LABEL=/boot /boot   ext3defaults1 2
tmpfs   /dev/shmtmpfs   defaults0 0
devpts  /dev/ptsdevpts  gid=5,mode=620  0 0
sysfs   /syssysfs   defaults0 0
proc/proc   procdefaults0 0
/dev/VolGroup00/LogVol01 swapswapdefaults0 0
192.168.211.129:/home/tst   /data/tst   nfs defaults0 0
192.168.211.129:/home/tst02 /data/tst02 nfs defaults0 0
192.168.211.129:/home/tst03 /data/tst03 nfs defaults0 0

2,将脚本nagios安装目录的libexec下,并赋予可执行权限

3,配置nrpe配置文件,添加相应的command

4,nagios监控机上添加相应的服务

NFS挂载脚本内容:

  1. #!/bin/bash  
  2.  
  3. #VERSION="1.0" 
  4. #AUTHOR by wenzizone.cn  
  5.  
  6. . /usr/local/nagios/libexec/utils.sh  
  7.  
  8. CHECKNAME="Mount NFS" 
  9.  
  10. RESULT="" 
  11. EXIT_STATUS=$STATE_OK  
  12.  
  13. NFSFSTAB=`LC_ALL=C awk '!/^#/ && $3 ~ /^nfs/ && $3 != "nfsd" && $4 !~ /noauto/ { print $1 }' /etc/fstab`  
  14. NFSMTAB=`LC_ALL=C awk '$3 ~ /^nfs/ && $3 != "nfsd" && $2 != "/" { print $1 }' /proc/mounts`  
  15.  
  16. theend() {  
  17. echo $RESULT  
  18. exit $EXIT_STATUS  
  19. }  
  20.  
  21. CHECK_MOUNT(){  
  22. LIST="" 
  23. for list in $NFSFSTAB  
  24. do  
  25. NFS_MOUNT=$(LC_ALL=C cat /proc/mounts |cut -d " " -f 1|grep "${list}$")  
  26. if [ -z "${NFS_MOUNT}" ];then  
  27. LIST="$LIST$list " 
  28. fi  
  29. done  
  30. return $LIST  
  31. }  
  32. if [ -n "${NFSMTAB}" ];then  
  33. if [ "${NFSFSTAB}" = "${NFSMTAB}" ];then  
  34. RESULT="$CHECKNAME OK - NFS BE MOUNTED PROPERLY" 
  35. EXIT_STATUS=$STATE_OK  
  36. else  
  37. CHECK_MOUNT  
  38. RESULT="$CHECKNAME WARNING - ${LIST} NOT BE MOUNTED" 
  39. EXIT_STATUS=$STATE_WARNING  
  40. fi  
  41. else  
  42. RESULT="$CHECKNAME CRITICAL - ALL NFS NOT BE MOUNTED" 
  43. EXIT_STATUS=$STATE_CRITICAL  
  44. fi  
  45.  
  46. theend 

对于NFS挂载脚本中还没有考虑到的还希望各位指出。

责任编辑:佟健 来源: IT实验室
相关推荐

2010-08-04 14:43:03

NFS挂载

2010-08-04 14:22:55

挂载NFS

2010-08-05 15:05:44

NFS挂载

2010-08-04 11:37:44

PHP NFS

2010-08-04 14:33:42

自动挂载nfs

2010-08-04 17:41:52

挂载NFS

2010-08-03 17:19:43

NFS服务

2019-05-08 13:18:22

Linux网络文件系统系统运维

2013-07-30 10:29:07

SUSE LinuxNFS

2010-07-28 15:13:42

VMwareNFS

2010-07-30 13:51:23

NFS配置

2010-08-03 17:23:41

NFS服务

2009-09-08 15:06:45

NFS服务器

2010-06-18 10:54:00

Linux Acloc

2018-05-25 14:16:55

NFS源代码线程

2010-07-22 12:54:15

开启telnet服务

2011-08-01 16:42:24

ibmdwNFS文件系统

2010-07-27 10:38:02

NFS ServerNFS Client

2021-03-02 14:30:20

鸿蒙HarmonyOS应用

2023-10-25 18:18:10

Python脚本代码
点赞
收藏

51CTO技术栈公众号