Bash:查找已用于非自动访问尝试的所有 IP 地址

Bash:查找已用于非自动访问尝试的所有 IP 地址

我正在 bash 上的虚拟机上工作。我被要求使用 auth.log 文件查找所有在未经授权的情况下尝试访问计算机的 IP 地址。我似乎没有找到我的问题的任何答案。这是一个例子:在此输入图像描述

所有返回的行必须写入我的共享文件/mnt/analysis/traitement/cueillette.txt。请帮忙 !谢谢

答案1

您不需要将 grep 插入 grep (这几乎总是表明您正在采取一种低效、误导的方法。 sed仅此一项就足以完成此任务。或awk. 或perl),这sudo su root cat只是无稽之谈。

尝试这个:

$ sudo sed -n -E -e '/sshd.*authentication failure/{s/^.*rhost=([0-9.]+).*/\1/p}' \ 
    /media/sf_partageAuth/auth.log > /mnt/analyse/traitement/cueillette.txt 

对于每行匹配“身份验证失败”的行(注意,不是“真实性cation"),此sed脚本删除从行开头到(包括)的所有内容rhost=,以及 IP 地址之后的所有内容,然后打印该行。

它使用sed's-E选项来扩展正则表达式,因此()+无需转义即可工作。

请注意,虽然该sed命令以 root 用户身份运行sudo,但输出重定向不是 - 这是在原始非 root shell 中完成的。如果您也需要 root 权限才能写入输出文件,请使用 运行teesudo例如:

$ sudo sed -n -E -e '/sshd.*authentication failure/{s/^.*rhost=([0-9.]+).*/\1/p}' \
    /media/sf_partageAuth/auth.log | 
    sudo tee /mnt/analyse/traitement/cueillette.txt > /dev/null

相关内容