【问题标题】:How to find and save strings of stuff in a file as variables如何在文件中查找字符串并将其保存为变量
【发布时间】:2015-12-17 12:52:35
【问题描述】:

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

有没有简单的方法来做到这一点?请帮忙:)

【问题讨论】:

    标签: bash shell ubuntu


    【解决方案1】:

    您应该使用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
    

    【讨论】:

    • 不会 grep "root 密码" /var/log/auth.log.1 | awk '{打印 $11}' | grep -v 重复 |排序 | uniq 会更容易吗?如果我使用它,我将如何将每个 ips 修补到 iptables 语句中?
    • 图像中没有任何内容。如果有的话,最好在这里粘贴错误。也许您需要编辑 awk 命令来设置正确的第 N 列而不是 $6 和 $8。对我来说是 11 美元和 13 美元
    • SO 不是免费的编码服务。在这里,开发人员与其他开发人员交谈。
    猜你喜欢
    • 1970-01-01
    • 2016-08-24
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 2011-03-16
    相关资源
    最近更新 更多