gpt4 book ai didi

linux - 用于解析日志文件然后附加到文件的 Powershell 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 12:10:11 27 4
gpt4 key购买 nike

我是 Shellscripting 的新手。我正在研究一个 poc,其中一个脚本应该读取一个日志文件,然后附加到一个现有文件以进行警报。它应该按照下面的方式工作

会根据一些预定义的格式来决定是否追加到文件中。例如:

WWXXX9999XS message

**XXX** - is a 3 letter acronym (application code) like for **tom** for tomcat application
9999 - is a 4 numeric digit in the range 1001-1999
**E or X** - For notification X ,If open/active alerts already existing for same error code and same message,new alerts will not be raised for existing one.Once you have closed existing alerts,it will raise alarm for new error.There is any change in message for same error code from existing one, it will raise a alarm even though open/active alerts present.
X option is only for drop duplicates on code and message otherwise all alert mechanisms are same.

**S** - is the severity level, I.e 2,3
**message** - is any text that will be displayed

该脚本将检查日志文件,并查找类似云服务器已关闭的错误,如果是新警报,它将附加“wwclo1002X2 云服务器已关闭”。2.如果同样的告警再次出现,那么它应该追加'wwclo1002E2 cloud server is down

最佳答案

您可以使用一些非常方便的命令来执行此类文件操作。我已根据您的评论更新了此内容,以允许检查错误是否已附加到新文件的功能。

我的建议是这里有足够的功能保证将其保存在 bash 脚本中。

我的方法是结合使用 less、grep 和 > 来读取和解析文件,然后附加到新文件。首先将以下内容保存到 bash 脚本中(例如名为 script.sh 的文件)

#!/bin/bash

result=$(less $1 | grep $2)
exists=$(less $3 | grep $2)

if [[ "$exists" == "$result" ]]; then
echo "error, already present in file"
exit 1
else
echo $result >> $3
exit 0
fi

然后在命令中使用这个文件,将日志文件作为第一个参数,将要搜索的字符串作为第二个参数,将目标结果文件作为第三个参数,如下所示:

./script.sh <logFileName> "errorToSearchFor" <resultsTargetFileName>

不要忘记运行您需要更改权限的文件 - 您可以使用:

chmod u+x script.sh

澄清一下,正如您提到的,您是脚本编写新手 - less 命令将输出整个文件, |命令(未命名的管道)会将此输出传递给 grep 命令,然后该命令会在文件中搜索引号中的表达式,并返回文件中包含该表达式的所有行。然后将 grep 命令的输出附加到带有 >> 的新文件中。

您可能需要修改 grep 后引号中的表达式,以从日志文件中准确获得您想要的输出。

文件名只是占位符,请务必使用正确的文件名更新这些文件名。希望这对您有所帮助!

注释已更新 > 到 >>(单尖括号覆盖,双尖括号附加

关于linux - 用于解析日志文件然后附加到文件的 Powershell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49276830/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com