커뮤니티 항목을 필터링하는 스크립트를 작성 중입니다 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
작업을 반대로 합니다. 즉, 일치하지 않는 행만 표시합니다.