我正在编写一个脚本来过滤社区条目,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
反转操作,即仅显示不匹配的行