【发布时间】:2014-03-01 04:53:05
【问题描述】:
我正在尝试创建一个脚本,该脚本在运行时将访问 /var/log/secure 文件并报告当天发生了多少次失败尝试,并将输出附加到名为 failed 的文件中:
日期:02/15/14 时间:10:30 失败尝试次数:8
并且应该使用文件重定向在脚本内完成输出,以便标准输出进入 failed.log 并且标准错误进入 error.log 文件。
我的代码(test.sh)是这样的:
#!/bin/bash
for i in $(date)
do
mdy=$($i "+%m/%d/%Y)
md=$($i "+%m %d")
tme=$($i "+ H:%M)
fail=$(grep Failed /var/log/secure | grep $md | wc -l
echo "Date: $mdy Time: $tme Number of failed attempts: $fail"
done
我做错了什么?
我执行了 for 循环,认为 i 将是日期命令,mdy 将显示 mm/dd/yy,tme 将是 HH:MM,md 将用于 grep var/log/secure 以获取失败的登录.
一旦我得到我想要的输出,我就可以通过 sh test.sh > failed.log 2> error.log
【问题讨论】:
-
顺便说一下,
grep -c等价于grep | wc -l。 -
$($i "+%m/%d/%Y")应该做什么? -
就此而言,
for循环到底在做什么?您循环当前date输出的组件...? -
nneonneo - 我认为我应该这样做来获取信息 - 从 date 命令中获取所有信息。我将把它放到一个 error.log 文件中,这样我就可以解析该文件以查看有多少失败的登录。
-
请准确告诉我您希望日期解析的样子。在我意识到我不明白你在寻找什么之后,我删除了我之前的评论。