0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

jf_TEuU2tls 来源:浩道linux 作者:浩道linux 2023-04-07 09:09 次阅读

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|grep01/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取代?



审核编辑:刘清

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

    关注

    88

    文章

    3600

    浏览量

    93629
  • 代码
    +关注

    关注

    30

    文章

    4762

    浏览量

    68408
  • Shell
    +关注

    关注

    1

    文章

    363

    浏览量

    23311
  • 脚本
    +关注

    关注

    1

    文章

    387

    浏览量

    14843
  • ChatGPT
    +关注

    关注

    29

    文章

    1550

    浏览量

    7545

原文标题:ChatGPT代码能力有多强?看看它写的这些shell脚本

文章出处:【微信号:浩道linux,微信公众号:浩道linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    shell脚本进阶】几个常用的shell进阶脚本

    shell脚本进阶】几个常用的shell进阶脚本
    的头像 发表于 09-19 08:59 1858次阅读
    【<b class='flag-5'>shell</b><b class='flag-5'>脚本</b>进阶】几个常用的<b class='flag-5'>shell</b>进阶<b class='flag-5'>脚本</b>

    shell是什么?shell实现原理分析基于MM32 MCU的shell脚本源码

    在前两节中,我们讲解了如何在MM32 MCU上使用shell来辅助开发,分别介绍的是通过串口方式和J-Link RTT方式的shell,本次课程我们分析源码来讲解
    发表于 12-02 15:58 2479次阅读

    Linux中执行shell脚本的两种方式

    一条的执行很是不大方便,这种太多命令的才能完成的,一般都是编写一个shell脚本来进行操作,而不用一步一步的进行。有些时候在Linux中的很多对应的应用程序目录下有很多.sh结尾的脚本,这些
    发表于 11-18 16:49 1812次阅读
    Linux中执行<b class='flag-5'>shell</b><b class='flag-5'>脚本</b>的两种方式

    Linux Shell脚本入门到实战详解

    Linux Shell脚本入门到实战详解
    发表于 02-17 15:03 628次阅读

    Linux shell脚本分享

    今天浩道跟大家分享几个Linux运维中常用到的shell脚本
    发表于 07-18 09:53 553次阅读
    Linux <b class='flag-5'>shell</b><b class='flag-5'>脚本</b>分享

    如何做才能学好Shell脚本的经验总结

    大多同学反馈Shell脚本不容易学,感觉学完了Shell脚本这部分课程,还是不能写出脚本来。 我来帮大家
    的头像 发表于 01-09 18:23 6215次阅读
    如何做才能学好<b class='flag-5'>Shell</b><b class='flag-5'>脚本</b>的经验总结

    如何利用Shell脚本掩藏Linux服务器使用痕迹

    使用 Shell 脚本在 Linux 服务器上能够控制、毁坏或者获取任何东西,通过一些巧妙的攻击方法黑客可能会获取巨大的价值,但大多数攻击也留下踪迹。当然,这些踪迹也可通过
    的头像 发表于 02-13 13:21 3305次阅读

    嵌入式和物联网的shell脚本学习指南之shell脚本入门免费下载

    本文档的主要内容详细技术的是嵌入式和物联网的shell脚本学习指南之shell脚本入门免费下载。
    发表于 09-11 17:15 20次下载
    嵌入式和物联网的<b class='flag-5'>shell</b><b class='flag-5'>脚本</b>学习指南之<b class='flag-5'>shell</b><b class='flag-5'>脚本</b>入门免费下载

    shell脚本最简明的教程

    Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell
    的头像 发表于 10-16 11:27 4778次阅读
    <b class='flag-5'>shell</b><b class='flag-5'>脚本</b>最简明的教程

    109个实用shell脚本分享

    Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell
    的头像 发表于 03-16 08:58 2605次阅读

    shell脚本基础知识

    shell脚本是一个文件,里面存放的是特定格式的指令,系统可以使用脚本解析器翻译或解析指令并执行(无需编译),shell脚本的本质是
    的头像 发表于 04-17 15:00 1070次阅读

    Linux Shell脚本经典案例分享

    ​ 作为一名 Linux 运维工程师,会写好的脚本不仅能提高工作效率,还能有更多的时间做自己的事。最近在网上冲浪的时候,发现大家对Shell脚本都有“心结”,要么觉得自己写出来不好看,要么根本无从下手。 下面分享249个真实
    发表于 06-16 14:03 641次阅读
    Linux <b class='flag-5'>Shell</b><b class='flag-5'>脚本</b>经典案例分享

    如何利用shell进行脚本程序的设计?

    利用Shell进行脚本程序的设计可以按照以下步骤进行: 选择Shell解释器:在Unix和Linux系统中,通常会默认安装一个或多个Shell
    的头像 发表于 11-08 10:17 585次阅读

    shell并行调用脚本

    Shell脚本中,可以使用一些技巧来实现并行调用。以下是几种常见的方法: 使用后台进程:在Shell脚本中,可以使用"command2 上
    的头像 发表于 11-08 10:23 924次阅读

    Shell脚本检查工具ShellCheck介绍

    ShellCheck是一个用于bash/sh shell脚本的静态分析工具,可以辅助检查脚本语法错误,给出建议增强脚本健壮性。
    的头像 发表于 12-27 13:43 2045次阅读
    <b class='flag-5'>Shell</b><b class='flag-5'>脚本</b>检查工具ShellCheck介绍