Usando o awk:
netstat -an | grep ':25' | grep -v '127.0.0.1\|::1' | wc -l | awk '{if($0==0) print "compliant"; else print "non-compliant"}'
- imprime
complaint
se a saída$0
for 0 - mais print
non-complaint
Meu objetivo é garantir que as conexões de e-mail sejam limitadas apenas à saída
Então eu tenho dois comandos shell, um é
netstat -an | grep ':25' | grep -v '127.0.0.1' | wc -l
que imprime 1
O comando acima está encontrando todas as instâncias da porta 25 além do host local, mas não exclui o ipv6
O outro comando é
netstat -an | grep ':25' | grep -v '127.0.0.1\|::1' | wc -l
que imprime 0
Este comando acima está encontrando todas as instâncias da porta 25 e excluindo localhost e ipv6
Eu preciso de um if else que compara os dois e diz se volta 0 print out compliant
else print out non-compliant
Qual é a melhor abordagem ao fazer isso através de ansible ou shell?
Aqui está como eu lidaria com isso.
#!/bin/bash
if netstat -an | grep ':25' | grep -q -v '127.0.0.1\|::1'
then echo non-compliant
else echo compliant
fi
Bash se as instruções puderem lidar com códigos de retorno. Se alguma coisa acontecer, ela retornará um status positivo e ecoará como não-compatível, caso contrário, é compatível
Se essa lógica parece confusa, você também pode inverter o status com um !
if ! netstat -an | grep ':25' | grep -q -v '127.0.0.1\|::1'
then echo compliant
else echo non-compliant
fi