Bash-скрипт для фильтрации определенных записей из snmpd.conf

Я работаю над сценарием для фильтрации записей сообщества из 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 с сервера перехода, на котором у меня есть список имен серверов в файле. Пожалуйста посоветуй.

0
29.08.2016, 02:31
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 инвертирует операцию, т.е. будут показаны только несовпадающие строки

1
28.01.2020, 02:47

Теги

Похожие вопросы