七 Linux Shell 脚本3
1 实验内容
(1) 通过SSH远程连接给定目标,密码为实验“LinuxShell脚本2”所得结果;
(2) 主目录下有一个ssh登录日志文件,帮忙分析文件,将登录失败超过20次(不含20)的IP加入到主目录的ban_waitlist中,已有IP不重复加入;
查看主目录下面的文件,发现有3个,auth.log
是ssh的日志文件,ban_waitlist
就是登录失败的,check
是一个可执行文件可用于检测是否为登陆失败的IP,成功后即可通关
经过查看日志文件后发现IP地址太多,无法直接用人力处理,又得撰写脚本实现
脚本:
希望利用grep
命令在日志文件中查找Failed password
字符,然后将该行中的IP地址提取出来awk '{print $(NF-3)}'
,然后再对他们进行排序,去掉那些重复的,并同时计数,把大于20次的IP地址保存到变量$addr
里面。
然后使用for循环遍历变量addr
,检查里面的IP是否存在于文件ban_waitlist
里面,如果不在,就把他们添加进去
#!/bin/bash
log="./auth.log"
ban="./ban_waitlist"
addr=$(grep "Failed password" $log | awk '{print $(NF-3)}' | sort | uniq -c | awk '$1 > 20 {print $2}')
for ip in $addr; do
if ! grep -q "^$ip$" $ban; then
echo $ip >> $ban
fi
done
(3) 执行主目录中check程序,获取下一关密码。
最后执行./check
,可执行程序会检查ban_waitlist
中的IP地址,如果都正确且无缺失就会输出密码,通关成功。