Script Bash para filtrar entradas específicas do snmpd.conf

0

Estou trabalhando em um script para filtrar entradas da comunidade de snmpd.conf Script é:

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

O que me dá saída no formato abaixo:

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

No entanto, quero filtrar apenas esses servidores, que não possuem nenhuma das entradas abaixo no snmpd.conf:

rocommunity XXXX 127.10.30.40
rocommunity XXXX 192.10.30.0/24
rocommunity XXXX 192.20.100.30

E para todos aqueles que não possuem essas entradas, mais tarde eu precisaria adicionar esses intervalos. Além disso, eu preciso executá-lo em vários servidores através de ssh, de um servidor de salto onde eu tenho lista de nomes de servidores em um arquivo. Por favor, conselhos.

    
por Vikas Thakur 28.08.2016 / 05:27

1 resposta

1

Você pode fazer isso com grep :

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

Coloque as entradas abaixo em exclude.txt , basicamente é sua lista de exclusão:

rocommunity XXXX 127.10.30.40
rocommunity XXXX 192.10.30.0/24
rocommunity XXXX 192.20.100.30
  • -f exclude.txt lê o padrão para corresponder ao arquivo exclude.txt

  • -F faz correspondência de cadeia fixa em vez de correspondência de padrões Regex

  • -x corresponde a linhas inteiras

  • -v inverte a operação, ou seja, apenas linhas não correspondentes serão mostradas

por 28.08.2016 / 05:44