用于过滤 snmpd.conf 中特定条目的 Bash 脚本

用于过滤 snmpd.conf 中特定条目的 Bash 脚本

我正在编写一个脚本来过滤社区条目,snmpd.conf 脚本是:

SERVER=$(hostname)
touch /tmp/snmp_audit_$SERVER
echo $SERVER >> /tmp/snmp_audit_$SERVER
SNMP=$(cat /etc/snmp/snmpd.conf |grep -i rocommunity | awk '{print $1,$2,$3}'
echo $SNMP >> /tmp/snmp_audit_$SERVER

这给了我以下格式的输出:

rocommunity XXXX 1nn.nn.nnn.40
rocommunity XXXX 1nn.nn.nnn.0/24
rocommunity XXXX 1nn.nn.nnn.30

但是,我只想过滤那些在 snmpd.conf 中没有以下任何条目的服务器:

rocommunity XXXX 127.10.30.40
rocommunity XXXX 192.10.30.0/24
rocommunity XXXX 192.20.100.30

对于所有没有这些条目的人,稍后我需要添加这些范围。另外,我需要通过 ssh 在多个服务器上运行它,从一个跳转服务器,我在文件中包含服务器名称列表。请指教。

答案1

您可以通过以下方式执行此操作grep

grep -vxFf exclude.txt /etc/snmp/snmpd.conf 

将以下条目放入 中exclude.txt,基本上它就是您的排除列表:

rocommunity XXXX 127.10.30.40
rocommunity XXXX 192.10.30.0/24
rocommunity XXXX 192.20.100.30
  • -f exclude.txt从文件中读取要匹配的模式exclude.txt

  • -F进行固定字符串匹配而不是正则表达式模式匹配

  • -x匹配整行

  • -v反转操作,即仅显示不匹配的行

相关内容