需要 Linux 重定向帮助

标签 linux bash

我正在尝试创建一个脚本,运行时将访问/var/log/secure 文件并报告当天发生了多少次失败尝试,将输出附加到名为 failed 的文件中,格式如下:

日期:2014年2月15日时间: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

最佳答案

如果问题是关于重定向,我会这样做:

#!/bin/bash

THIS_SCRIPT_NAME=$( basename $0 )
LOG_DIR='/var/log'
DATE_POSTFIX=$( date '+_%Y_%m_%d_%H_%M_%S' )
LOG_FILE="${LOG_DIR}/${THIS_SCRIPT_NAME}${DATE_POSTFIX}.log"

if [ ! -d "$LOG_DIR" ]; then
        mkdir -p "$LOG_DIR"
fi

exec 1>>"$LOG_FILE" 2>&1

关于需要 Linux 重定向帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22084640/

相关文章:

linux - 当 psplash 从初始化脚本 (PID=1) 启动时,psplash-write 不起作用

linux - 以粗体显示目录 – 如何启用?与.bash_profile?

linux - 我无法列出大目录

java - Linux MV 命令来自 Java

bash - 在不指定 Bash 中的索引的情况下向数组添加新元素

regex - 在 ls (bash) 中匹配文件名

linux - Grep 过滤进程已经启动后的输出?

linux - 是否可以在守护进程不关闭文件的情况下修剪守护进程打开的日志文件?

linux - 如何在文件中间写入(Bourne Shell 脚本)

bash - 如何使用 logger 命令登录到 linux 中的特定文件?