我有一个Nagios检查,它给我一个字符串,其中包含服务器上每个挂载使用的空间(df -h
的结果)。字符串看起来像:
/mnt/srv1: 22%used(1129MB/5191MB) /mnt/srv2: 59%used(1344MB/1713MB) /mnt/srv3: 97%used(2409MB/2576MB) /var/backup: 95%used(5976MB/69802MB) /mnt/srv1/dir1: 22%used(119MB/519MB) /: 22%used(119MB/514MB) /mnt/serv1: 59%used(144MB/1710MB) /mnt/srv1/dir2: 88%used(3034MB/3420MB) (>97%) : CRITICAL
我希望匹配整个字符串,而不是说以下两部分:/var/backup: 95%used(5976MB/69802MB)
和/mnt/serv1: 59%used(144MB/1710MB)
我想要一个通用表达式,因为我想要删除的字符串可能会改变。
一般规则是我有一条路径,后跟该路径的空间规范。我正在尝试学习正则表达式,但似乎在这种情况下,我尝试过的所有东西都不起作用。
支票的工作原理如下:
check_snmp_storage -H hostname -C comstring -m "this is the regular expression"
例如我试图
check_snmp_storage -H hostname -C comstring -m "\/[a-zA-Z0-9:]+"
但它与我想要的不匹配
好的我管理了一些东西。以下检查:
check_snmp_storage -H hostname -C comstring -m "([\/a-zA-Z0-9]+:\s[\/a-zA-Z0-9\(%]*MB\)|\(>97%\) : CRITICAL)"
完成它的工作并匹配我感兴趣的东西,但是如何从那些匹配中排除我之前提到的那些?