我想知道一种方法,在bash脚本中找到一串数字并将它们保存为变量
例如,我想在auth.log中找到“失败”请求并找到那个请求失败的ip,例如
Failed password for invalid user kim from 183.56.129.146 port 49876 ssh2
我想将IP和用户记录到变量中,比如$ user1 $ ip1,以便稍后在脚本中使用
因为这是auth.log文件,所以会有很多失败的密码语句和东西,我想保存整个文件中的所有ips和用户集,不是一个,而是单独用于以后的iptables命令
有一种简单的方法吗?请帮助:)
答案 0 :(得分:0)
你应该使用fail2ban而不是重新发明轮子。
如果由于一些奇怪的原因你不能:
declare -A users # declare an array
$(awk '/Failed password/{print "declare users["$6"]="$8}' /var/log/auth.log)
echo "${users[@]}" # values
echo "${!users[@]}" # keys
for user in ${!users[@]}; do echo "user $user, ip ${users[$user]}"; done