bash + 如何避免日志文件中的特定消息

bash + 如何避免日志文件中的特定消息

当我在 Linux 机器上运行 bash 脚本时,日志中出现以下错误,

注意-我们在脚本中设置:

exec > $log 2>&1 ,  (  in order to send all standard error/output to $log ) 

错误信息:

tput: No value for $TERM and no -T specified

为了过滤这些错误消息,我们尝试在 bash 脚本中设置:

export TERM=xterm

但没有帮助

经过挖掘,我们发现在某些情况下会发生这种情况,例如当我们对远程机器执行 ssh 并通过 ssh 在远程机器上运行命令时

为了避免这种情况,我们在 bash 脚本中设置 TERM=xterm ,如下所示:

ssh user@$remote_machine "TERM=xterm  /tmp/script.sh"

但这不是一个优雅的解决方案,因为我的脚本使用了很多 ssh 和 curl 命令,所以在每个 SSH 或 curl 等上设置它不是一个实用的解决方案

所以我最大的问题是

如何过滤信息 –tput:没有 $TERM 的值并且没有指定 -T

以便我们不会在我的$日志文件

答案1

在传递到日志之前,您尝试过滤一下怎么样?也许像这样?

exec 2>&1 | egrep -v "tput: No value for $TERM and no -T specified" > $log

经过深思熟虑,这不适用于 exec。也许最好在脚本外部定义它,即使用包装器脚本。

看看这个是否有效:

从脚本中注释掉 exec 和 log 语句,如下所示

#exec > $log 2>&1 

并使用执行脚本

/path/to/script.sh 2>&1 | egrep -v "tput: No value for $TERM and no -T specified" > /path/to/log

相关内容