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작업을 반대로 합니다. 즉, 일치하지 않는 행만 표시합니다.

관련 정보