远程检查只读文件系统

Sim*_*een 5 linux bash nagios snmp

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

到目前为止,我的想法是:

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

SNMP 方法是我能想到的最好/最干净的方法,但是我不知道如何执行此操作,因为 CLI SNMP 似乎是一场噩梦,特别是如果我需要通过决策过程来查找基于给定的挂载点。

理想情况下,我想仅使用 BASH(包括 sed/awk/grep 等)和 SNMP 来解决这个问题,但需要一些关于从哪里开始的指导!已经在所有相关服务器上为 v2 安装和配置了 snmpd。

此脚本的最终用途将作为 Nagios 命令。

非常感谢您的帮助!

注意 我们已经有 cacti/nagios 设置监控 100 台服务器,我在最初发布时忘记提及这一点!

Mat*_*erg 5

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

exec usercount-irc /home/irc/usercount-irc.sh
Run Code Online (Sandbox Code Playgroud)

要对此进行轮询,您可以使用 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:
Run Code Online (Sandbox Code Playgroud)

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

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

但我现在看到它不包含挂载标志,所以你不能在那里看到只读。嘎。回到上面的脚本以及如何调用它!:P