【发布时间】:2014-10-23 19:01:01
【问题描述】:
我正在编写一个脚本来阻止 SFTP 服务器上登录失败的 IP 地址。我还使用 Centrify 将服务器连接到 AD,并且我注意到 Centrify 记录用户访问的方式与正常情况不同。我可以使用以下一行提取失败登录的 IP 地址:
(grep sshd /var/log/messages | grep "AUTH_FAIL_PASSWD" | awk '{print $18}' | sort | uniq -c | awk '{ if ( $1 > 10) print $2 }')
使用 Centrify 可以得到以下输出:
client=0.0.0.0
我需要做的是删除“client=”,这样我就可以只将 IP 地址传递给脚本的其余部分。
感谢您的帮助!
【问题讨论】:
-
任何时候你用 grep 和 awk 这样的管道,你就犯了一个错误。 awk 可以为您进行过滤。
/sshd/ && /AUTH_FAIL_PASSWD/ {print $18} -
您也可以在 awk 中进行重复数据删除(以将条目保留在内存中为代价),而无需排序。
-
{if ($1 > 10) print $2}可以改写为$1 > 10 {print $2}。