为动态日期编写脚本以查找无效用户访问服务器
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
grep
s
你可能试图写出类似
的东西
sudo cat /var/log/secure |
awk -v d="$(date "+%h %d")" '
/Invalid/ && ([=10=] ~ d) { print ,,,}' |
sort | uniq -c
更详细地说,我们将 date
的输出分配给 Awk 变量 d
并使用 Awk 模式匹配语言仅 print
匹配该变量的行和静态模式 Invalid
.
编写一个脚本,将日期(如 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 运行sdate "+%h %d"
并将输出分配给变量d
.- 然后您使用
grep d
但这当然会 grep 文字字符串d
,而不是变量。 - 没有引用,Awk 脚本将
</code> 替换为当前 shell 脚本的第一个参数,<code>
替换为第二个,等等。您可能会收到来自 Awk 的语法错误,除非所有这些变量恰好包含有效的 Awk 代码。 - 您还需要避免那些 useless
grep
s
你可能试图写出类似
的东西sudo cat /var/log/secure |
awk -v d="$(date "+%h %d")" '
/Invalid/ && ([=10=] ~ d) { print ,,,}' |
sort | uniq -c
更详细地说,我们将 date
的输出分配给 Awk 变量 d
并使用 Awk 模式匹配语言仅 print
匹配该变量的行和静态模式 Invalid
.