为动态日期编写脚本以查找无效用户访问服务器

write a script for dynamic date to find Invalid user hitting the server

编写一个脚本,将日期(如 3 月 1 日)作为参数,并找到进入服务器的无效点击,并在第二天自动更新日期

我试过这个不行

d=date "+%h %d"
sudo cat /var/log/secure | grep d | grep Invalid | awk {print ,,,} | sort | uniq -c

它显示给我(./currentlog.sh: line 32: +%h %e: command not found)但它正在打印 Feb 28 invalid 以及 Mar 1 invalid user

这里有多个语法错误。

  • d=date 将字符串 date 分配给变量 d,然后尝试 运行 令牌 "+%h %d" 作为命令,同时此分配处于地方。您似乎正在寻找 d=$(date "+%h %d") which 运行s date "+%h %d" 并将输出分配给变量 d.
  • 然后您使用 grep d 但这当然会 grep 文字字符串 d,而不是变量。
  • 没有引用,Awk 脚本将 </code> 替换为当前 shell 脚本的第一个参数,<code> 替换为第二个,等等。您可能会收到来自 Awk 的语法错误,除非所有这些变量恰好包含有效的 Awk 代码。
  • 您还需要避免那些 useless greps

可能试图写出类似

的东西
sudo cat /var/log/secure |
awk -v d="$(date "+%h %d")" '
    /Invalid/ && ([=10=] ~ d) { print ,,,}' |
sort | uniq -c

更详细地说,我们将 date 的输出分配给 Awk 变量 d 并使用 Awk 模式匹配语言仅 print 匹配该变量的行和静态模式 Invalid.