远程检查只读文件系统

我需要远程定期检查Linux文件系统是否安装在只读服务器上。 在这种情况下,我唯一可以使用的工具是通常的CLI脚本语言(BASH / Perl / Python),SSH和SNMP

我到目前为止的想法是:

  • 共享SSH密钥并远程执行mount命令,grep / awk-ing给定挂载点上的RO标志。
  • 通过SNMP检查,但我不确定这些信息是否可用或是多么容易。
  • 尝试通过SCP文件或远程触摸文件。

SNMP方法是我能想到的最好的/最干净的,但是我不知道如何做到这一点,因为CLI SNMP看起来像一场噩梦,特别是如果我需要运行一个决策过程来find基于给定安装点。

理想情况下,我只想使用BASH(包括sed / awk / grep等)和SNMP,但需要一些指导从哪里开始! snmpd已经在所有服务器上安装并configuration了v2。

这个脚本的最终用途将是一个Nagios命令。

非常感谢您的帮助!

注意我们已经有cacti / nagios设置了监控服务器的数量,当我最初发布的时候我忘了提及这个!

在你的snmpd.conf查看exec参数。 我使用它来远程轮询我的一些IRC服务器的用户数,如下所示:

 exec usercount-irc /home/irc/usercount-irc.sh 

要调查你snmpwalk .1.3.6.1.4.1.2021.8,会得到这样的事情:

 # snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.8 UCD-SNMP-MIB::extIndex.1 = INTEGER: 1 UCD-SNMP-MIB::extNames.1 = STRING: usercount-irc UCD-SNMP-MIB::extCommand.1 = STRING: /home/irc/usercount-irc.sh UCD-SNMP-MIB::extResult.1 = INTEGER: 0 UCD-SNMP-MIB::extOutput.1 = STRING: 558 UCD-SNMP-MIB::extErrFix.1 = INTEGER: 0 UCD-SNMP-MIB::extErrFixCmd.1 = STRING: 

查看http://linux.die.net/man/5/snmpd.conf的扩展代理function部分以获取更多详细信息!

编辑1:
UCD-SNMP-MIB:dskTable包含有关安装的卷和使用情况的信息。 它位于OID .1.3.6.1.4.1.2021.9之下并logging在:
http://www.oidview.com/mibs/2021/UCD-SNMP-MIB.html
http://www.net-snmp.org/docs/mibs/ucdavis.html#dskTable

但是我现在看到它不包含mountflags,所以你看不到只读。 嘎。 回到上面的脚本,以及如何调用它! :P

对于大多数“我如何在nagios中做X”?你会发现有人已经写了一个插件来完成你所需要的全部或者至less一部分。

在这种情况下,您可以将check_ro_mounts与“negate”插件(标准的nagios插件的一部分)结合使用,或者将其修改为适合您的需要:

http://exchange.nagios.org/directory/Plugins/Uncategorized/Operating-Systems/Linux/check_ro_mounts/details

另一种方法是使用Perl的Ruby的Net :: SSH或Python的paraminko库来远程login和(无需事先设置密钥),然后parsing“mount”命令的内容。

可以通过Puppet来处理和确认挂载点及其标志。 请参阅如何从puppetpipe理装载的分区(fstab +挂载点)