21 Feb 2009
由提取ssh登陆失败日志联想到的ip匹配问题
要求:统计非法尝试ssh用户登陆的ip及其尝试次数
sed -n ‘/sshd.*Failed.*password/p’ /var/log/secure | awk ‘{for (count=1;count<=NF;count++){if ($count ~ /[0-9][0-9]?[0-9]?./) {print $count}}}’ | sort | uniq -c | sort -nr |
因为是朋友的面试题,当时做只顾着速度了,所以正则中有颇多不严谨之处(不严谨也是相对而言,因为一般情况下该文件不会出现十分非主流ip地址)。
以下的联想主要针对非主流ip地址,比如999.12.999.1
实际上这是个极无聊的设想,下面是极无聊的正则
awk ‘{for (count=1;count<=NF;count++){if ($count ~ /(2[0-4][0-9] | 25[0-5] | [01]?[0-9][0-9]?).(2[0-4][0-9] | 25[0-5] | [01]?[0-9][0-9]?).(2[0-4][0-9] | 25[0-5] | [01]?[0-9][0-9]?).(2[0-4][0-9] | 25[0-5] | [01]?[0-9][0-9]?))/) {print $count}}}’ |