我的目标是确保电子邮件连接仅限于出站
所以我有两个 shell 命令,一个是
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
上面的命令查找端口 25 的所有实例,不包括 localhost 和 ipv6
我需要一个 if else 来比较两者并说如果它返回 0 打印输出compliant
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