利用ChatGPT通过Shell脚本来实现日志分析

电子说

1.3w人已加入

描述

ChatGPT自出道以来,其出色的代码能力被众多程序员追捧,今天浩道就运维工作中常见的日志分析场景,利用ChatGPT让它通过Shell脚本来实现日志分析,并且附上人工写的正确脚本。ChatGPT答案纯原生未加以修改,未去验证是否正确,大家可以利用这个机会去验证其代码能力,一起对比下吧!

1、通过shell分析网站日志,查看有多少个IP访问?

人工答案:

 

awk '{print $1}' log_file|sort|uniq|wc -l

 

ChatGPT答案:

 

以下是一个简单的分析网站访问日志并统计IP数量的脚本:


#!/bin/bash


# 设置日志文件名和路径
log_file="/var/log/nginx/access.log"


# 从访问日志获取所有的IP地址
ips=$(awk '{print $1}' "$log_file")


# 使用uniq命令统计不同的IP地址数量
ip_count=$(echo "$ips" | sort | uniq | wc -l)


# 输出结果
echo "There are $ip_count unique IP addresses in the access log."




使用方法:


1. 将脚本保存到一个文件中,例如`count_ips.sh`
2. 使用`chmod +x count_ips.sh`命令添加可执行权限
3. 在终端中运行`./count_ips.sh`来分析网站访问日志并统计IP数量

 

2、通过shell分析,查看一个网站某一个页面被访问的次数:

人工答案:

 

grep "/index.php" log_file | wc -l

 

ChatGPT答案:

 

#!/bin/bash


# 设置日志文件名和路径
log_file="/var/log/nginx/access.log"


# 设置需要统计的页面URL
page_url="/page.html"


# 使用grep命令从访问日志中查找包含指定页面URL的访问记录,并用wc命令统计行数(即访问次数)
page_count=$(grep "$page_url" "$log_file" | wc -l)


# 输出结果
echo "The page $page_url has been accessed $page_count times."




使用方法:


1. 将脚本保存到一个文件中,例如`count_page.sh`
2. 使用`chmod +x count_page.sh`命令添加可执行权限
3. 修改脚本中的`log_file`和`page_url`变量为对应的值
4. 在终端中运行`./count_page.sh`来分析网站访问日志并统计某一个页面被访问次数

 

3、通过shell分析,查看每一个IP访问了某个网站多少个页面

人工答案:

 

awk '{++S[$1]} END {for (a in S) print a,S[a]}' log_file > log.txt


sort -n -t ' ' -k 2 log.txt  # 配合sort进一步排序

 

ChatGPT答案:

 

以下是一个简单的分析网站访问日志并统计每个IP访问了某个网站多少个页面的脚本:


#!/bin/bash


# 设置日志文件名和路径
log_file="/var/log/nginx/access.log"


# 设置需要统计的网站主机名或IP地址
hostname="example.com"


# 使用grep命令从访问日志中查找符合主机名或IP地址条件的访问记录,并使用awk命令提取IP地址和URL信息
ip_urls=$(grep "$hostname" "$log_file" | awk '{print $1,$7}')


# 使用awk命令对提取的IP地址和URL信息进行分组,并且统计每个IP对应的URL数量
ip_url_counts=$(echo "$ip_urls" | awk '{print $1" "$2}' | sort | uniq -c)


# 输出结果
echo "IP address URL counts:"
echo "$ip_url_counts"




使用方法:


1. 将脚本保存到一个文件中,例如`count_ip_urls.sh`
2. 使用`chmod +x count_ip_urls.sh`命令添加可执行权限
3. 修改脚本中的`log_file`和`hostname`变量为对应的值
4. 在终端中运行`./count_ip_urls.sh`来分析网站访问日志并统计每个IP访问了某个网站多少个页面

 

4通过shell分析,将每个IP访问网站的页面数进行从小到大排序

人工答案:

 

awk '{++S[$1]} END {for (a in S) print S[a],a}' log_file | sort -n

 

ChatGPT答案:

 

假设要分析的日志文件为access.log,可以使用以下命令进行分析和排序:


awk '{print $1,$7}' access.log | sort | uniq -c | sort -n




解释一下该命令:


- `awk '{print $1,$7}' access.log`:使用awk命令,将每行日志中的IP地址和访问页面提取出来,以空格分隔。
- `sort`:对提取出来的IP地址和访问页面进行排序。
- `uniq -c`:对排序后的结果进行去重,同时统计每个IP访问每个页面的次数。
- `sort -n`:对统计后的结果进行排序,按照访问次数从小到大排序。


运行以上命令,即可得到每个IP访问网站的页面数从小到大排序的结果。

 

5通过shell分析,查看2023年4月1日16时这一个小时内有多少IP访问网站

人工答案:

 

awk '{print $4,$1}' log_file | grep 01/Apr/2023:14 | awk '{print $2}'| sort | uniq | wc -l

 

ChatGPT答案:

 

假设要分析的日志文件为access.log,可以使用以下命令进行分析:


grep '01/Apr/2023' access.log | awk '{print $1}' | sort | uniq -c | wc -l




解释一下该命令:


- `grep '01/Apr/2023' access.log`:使用grep命令,过滤出日志文件中时间为2023年4月1日14时的所有日志记录。
- `awk '{print $1}'`:使用awk命令,提取出过滤结果中的IP地址。
- `sort`:对提取出来的IP地址进行排序。
- `uniq -c`:对排序后的结果进行去重,同时统计每个IP出现的次数。
- `wc -l`:统计去重后的结果数量,即为2023年4月1日14时这一个小时内访问网站的IP数目。


运行以上命令,即可得到2023年4月1日14时这一个小时内访问网站的IP数目。

 

结语:以上通过5道shell编程题目进行大PK,大家觉得怎么样?个人觉得ChatGPT除了给出答案,还附上了详细的解题思路,这不就是我们人工写代码时所分析的步骤吗?但是它不是人啊!大家害怕了吗?害怕是否会有哪一天会被AI取代?



审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分