如何在文件中查找和保存字符串作为变量

时间:2015-09-20 22:03:02

标签: bash shell ubuntu

我想知道一种方法,在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命令

有一种简单的方法吗?请帮助:)

1 个答案:

答案 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