내 목표는 이메일 연결이 아웃바운드로 제한되도록 하는 것입니다.
그래서 두 개의 쉘 명령이 있습니다. 하나는 다음과 같습니다.
netstat -an | grep ':25' | grep -v '127.0.0.1' | wc -l
인쇄하다1
위 명령은 localhost를 제외한 포트 25의 모든 인스턴스를 찾지만 ipv6은 제외하지 않습니다.
또 다른 명령은
netstat -an | grep ':25' | grep -v '127.0.0.1\|::1' | wc -l
인쇄하다0
위 명령은 localhost 및 ipv6을 제외한 포트 25의 모든 인스턴스를 찾습니다.
두 가지를 비교하고 0을 반환하면 compliant
else 인쇄물을 반환하려면 if else가 필요합니다.non-compliant
Ansible 또는 Shell을 통해 이를 수행하는 가장 좋은 방법은 무엇입니까?
답변1
이것이 내가 처리하는 방법입니다.
#!/bin/bash
if netstat -an | grep ':25' | grep -q -v '127.0.0.1\|::1'
then echo non-compliant
else echo compliant
fi
Bash if 문은 반환 코드를 처리할 수 있습니다. 통과한 항목이 있으면 긍정적인 상태를 반환하고 비준수 에코를 표시합니다. 그렇지 않으면 규정을 준수합니다.
이 논리가 혼란스러워 보인다면 다음을 사용할 수도 있습니다.!
if ! netstat -an | grep ':25' | grep -q -v '127.0.0.1\|::1'
then echo compliant
else echo non-compliant
fi
답변2
awk를 사용하세요:
netstat -an | grep ':25' | grep -v '127.0.0.1\|::1' | wc -l | awk '{if($0==0) print "compliant"; else print "non-compliant"}'
complaint
출력이$0
0이면 인쇄됩니다.- 그렇지 않으면 인쇄
non-complaint