RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用ChatGPT通過Shell腳本來實(shí)現(xiàn)日志分析

jf_TEuU2tls ? 來源:浩道linux ? 作者:浩道linux ? 2023-04-07 09:09 ? 次閱讀

ChatGPT自出道以來,其出色的代碼能力被眾多程序員追捧,今天浩道就運(yùn)維工作中常見的日志分析場景,利用ChatGPT讓它通過Shell腳本來實(shí)現(xiàn)日志分析,并且附上人工寫的正確腳本。ChatGPT答案純原生未加以修改,未去驗證是否正確,大家可以利用這個機(jī)會去驗證其代碼能力,一起對比下吧!

1、通過shell分析網(wǎng)站日志,查看有多少個IP訪問?

人工答案:

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

ChatGPT答案:

以下是一個簡單的分析網(wǎng)站訪問日志并統(tǒng)計IP數(shù)量的腳本:


#!/bin/bash


# 設(shè)置日志文件名和路徑
log_file="/var/log/nginx/access.log"


# 從訪問日志獲取所有的IP地址
ips=$(awk '{print $1}' "$log_file")


# 使用uniq命令統(tǒng)計不同的IP地址數(shù)量
ip_count=$(echo "$ips" | sort | uniq | wc -l)


# 輸出結(jié)果
echo "There are $ip_count unique IP addresses in the access log."




使用方法:


1. 將腳本保存到一個文件中,例如`count_ips.sh`
2. 使用`chmod +x count_ips.sh`命令添加可執(zhí)行權(quán)限
3. 在終端中運(yùn)行`./count_ips.sh`來分析網(wǎng)站訪問日志并統(tǒng)計IP數(shù)量

2、通過shell分析,查看一個網(wǎng)站某一個頁面被訪問的次數(shù):

人工答案:

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

ChatGPT答案:

#!/bin/bash


# 設(shè)置日志文件名和路徑
log_file="/var/log/nginx/access.log"


# 設(shè)置需要統(tǒng)計的頁面URL
page_url="/page.html"


# 使用grep命令從訪問日志中查找包含指定頁面URL的訪問記錄,并用wc命令統(tǒng)計行數(shù)(即訪問次數(shù))
page_count=$(grep "$page_url" "$log_file" | wc -l)


# 輸出結(jié)果
echo "The page $page_url has been accessed $page_count times."




使用方法:


1. 將腳本保存到一個文件中,例如`count_page.sh`
2. 使用`chmod +x count_page.sh`命令添加可執(zhí)行權(quán)限
3. 修改腳本中的`log_file`和`page_url`變量為對應(yīng)的值
4. 在終端中運(yùn)行`./count_page.sh`來分析網(wǎng)站訪問日志并統(tǒng)計某一個頁面被訪問次數(shù)

3、通過shell分析,查看每一個IP訪問了某個網(wǎng)站多少個頁面

人工答案:

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


sort -n -t ' ' -k 2 log.txt  # 配合sort進(jìn)一步排序

ChatGPT答案:

以下是一個簡單的分析網(wǎng)站訪問日志并統(tǒng)計每個IP訪問了某個網(wǎng)站多少個頁面的腳本:


#!/bin/bash


# 設(shè)置日志文件名和路徑
log_file="/var/log/nginx/access.log"


# 設(shè)置需要統(tǒng)計的網(wǎng)站主機(jī)名或IP地址
hostname="example.com"


# 使用grep命令從訪問日志中查找符合主機(jī)名或IP地址條件的訪問記錄,并使用awk命令提取IP地址和URL信息
ip_urls=$(grep "$hostname" "$log_file" | awk '{print $1,$7}')


# 使用awk命令對提取的IP地址和URL信息進(jìn)行分組,并且統(tǒng)計每個IP對應(yīng)的URL數(shù)量
ip_url_counts=$(echo "$ip_urls" | awk '{print $1" "$2}' | sort | uniq -c)


# 輸出結(jié)果
echo "IP address URL counts:"
echo "$ip_url_counts"




使用方法:


1. 將腳本保存到一個文件中,例如`count_ip_urls.sh`
2. 使用`chmod +x count_ip_urls.sh`命令添加可執(zhí)行權(quán)限
3. 修改腳本中的`log_file`和`hostname`變量為對應(yīng)的值
4. 在終端中運(yùn)行`./count_ip_urls.sh`來分析網(wǎng)站訪問日志并統(tǒng)計每個IP訪問了某個網(wǎng)站多少個頁面

4、通過shell分析,將每個IP訪問網(wǎng)站的頁面數(shù)進(jìn)行從小到大排序

人工答案:

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

ChatGPT答案:

假設(shè)要分析的日志文件為access.log,可以使用以下命令進(jìn)行分析和排序:


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




解釋一下該命令:


- `awk '{print $1,$7}' access.log`:使用awk命令,將每行日志中的IP地址和訪問頁面提取出來,以空格分隔。
- `sort`:對提取出來的IP地址和訪問頁面進(jìn)行排序。
- `uniq -c`:對排序后的結(jié)果進(jìn)行去重,同時統(tǒng)計每個IP訪問每個頁面的次數(shù)。
- `sort -n`:對統(tǒng)計后的結(jié)果進(jìn)行排序,按照訪問次數(shù)從小到大排序。


運(yùn)行以上命令,即可得到每個IP訪問網(wǎng)站的頁面數(shù)從小到大排序的結(jié)果。

5、通過shell分析,查看2023年4月1日16時這一個小時內(nèi)有多少IP訪問網(wǎng)站

人工答案:

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

ChatGPT答案:

假設(shè)要分析的日志文件為access.log,可以使用以下命令進(jìn)行分析:


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命令,提取出過濾結(jié)果中的IP地址。
- `sort`:對提取出來的IP地址進(jìn)行排序。
- `uniq -c`:對排序后的結(jié)果進(jìn)行去重,同時統(tǒng)計每個IP出現(xiàn)的次數(shù)。
- `wc -l`:統(tǒng)計去重后的結(jié)果數(shù)量,即為2023年4月1日14時這一個小時內(nèi)訪問網(wǎng)站的IP數(shù)目。


運(yùn)行以上命令,即可得到2023年4月1日14時這一個小時內(nèi)訪問網(wǎng)站的IP數(shù)目。

結(jié)語:以上通過5道shell編程題目進(jìn)行大PK,大家覺得怎么樣?個人覺得ChatGPT除了給出答案,還附上了詳細(xì)的解題思路,這不就是我們?nèi)斯懘a時所分析的步驟嗎?但是它不是人??!大家害怕了嗎?害怕是否會有哪一天會被AI取代?



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3614

    瀏覽量

    93685
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4779

    瀏覽量

    68521
  • Shell
    +關(guān)注

    關(guān)注

    1

    文章

    365

    瀏覽量

    23354
  • 腳本
    +關(guān)注

    關(guān)注

    1

    文章

    389

    瀏覽量

    14858
  • ChatGPT
    +關(guān)注

    關(guān)注

    29

    文章

    1558

    瀏覽量

    7592

原文標(biāo)題:ChatGPT代碼能力有多強(qiáng)?看看它寫的這些shell腳本

文章出處:【微信號:浩道linux,微信公眾號:浩道linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    shell腳本進(jìn)階】幾個常用的shell進(jìn)階腳本

    shell腳本進(jìn)階】幾個常用的shell進(jìn)階腳本
    的頭像 發(fā)表于 09-19 08:59 ?1879次閱讀
    【<b class='flag-5'>shell</b><b class='flag-5'>腳本</b>進(jìn)階】幾個常用的<b class='flag-5'>shell</b>進(jìn)階<b class='flag-5'>腳本</b>

    shell是什么?shell實(shí)現(xiàn)原理分析基于MM32 MCU的shell腳本源碼

    在前兩節(jié)中,我們講解了如何在MM32 MCU上使用shell來輔助開發(fā),分別介紹的是通過串口方式和J-Link RTT方式的shell,本次課程我們分析源碼來講解
    發(fā)表于 12-02 15:58 ?2497次閱讀

    Linux中執(zhí)行shell腳本的兩種方式

    一條的執(zhí)行很是不大方便,這種太多命令的才能完成的,一般都是編寫一個shell腳本來進(jìn)行操作,而不用一步一步的進(jìn)行。有些時候在Linux中的很多對應(yīng)的應(yīng)用程序目錄下有很多.sh結(jié)尾的腳本,這些
    發(fā)表于 11-18 16:49 ?1825次閱讀
    Linux中執(zhí)行<b class='flag-5'>shell</b><b class='flag-5'>腳本</b>的兩種方式

    Linux Shell腳本入門到實(shí)戰(zhàn)詳解

    Linux Shell腳本入門到實(shí)戰(zhàn)詳解
    發(fā)表于 02-17 15:03 ?636次閱讀

    如何做才能學(xué)好Shell腳本的經(jīng)驗總結(jié)

    大多同學(xué)反饋Shell腳本不容易學(xué),感覺學(xué)完了Shell腳本這部分課程,還是不能寫出腳本來。 我來幫大家
    的頭像 發(fā)表于 01-09 18:23 ?6229次閱讀
    如何做才能學(xué)好<b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>的經(jīng)驗總結(jié)

    如何利用Shell腳本掩藏Linux服務(wù)器使用痕跡

    使用 Shell 腳本在 Linux 服務(wù)器上能夠控制、毀壞或者獲取任何東西,通過一些巧妙的攻擊方法黑客可能會獲取巨大的價值,但大多數(shù)攻擊也留下蹤跡。當(dāng)然,這些蹤跡也可通過
    的頭像 發(fā)表于 02-13 13:21 ?3316次閱讀

    嵌入式和物聯(lián)網(wǎng)的shell腳本學(xué)習(xí)指南之shell腳本入門免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)技術(shù)的是嵌入式和物聯(lián)網(wǎng)的shell腳本學(xué)習(xí)指南之shell腳本入門免費(fèi)下載。
    發(fā)表于 09-11 17:15 ?20次下載
    嵌入式和物聯(lián)網(wǎng)的<b class='flag-5'>shell</b><b class='flag-5'>腳本</b>學(xué)習(xí)指南之<b class='flag-5'>shell</b><b class='flag-5'>腳本</b>入門免費(fèi)下載

    shell腳本最簡明的教程

    Shell腳本,就是利用Shell的命令解釋的功能,對一個純文本的文件進(jìn)行解析,然后執(zhí)行這些功能,也可以說Shell
    的頭像 發(fā)表于 10-16 11:27 ?4827次閱讀
    <b class='flag-5'>shell</b><b class='flag-5'>腳本</b>最簡明的教程

    109個實(shí)用shell腳本分享

    Shell腳本,就是利用Shell的命令解釋的功能,對一個純文本的文件進(jìn)行解析,然后執(zhí)行這些功能,也可以說Shell
    的頭像 發(fā)表于 03-16 08:58 ?2619次閱讀

    shell腳本基礎(chǔ)知識

    shell腳本是一個文件,里面存放的是特定格式的指令,系統(tǒng)可以使用腳本解析器翻譯或解析指令并執(zhí)行(無需編譯),shell腳本的本質(zhì)是
    的頭像 發(fā)表于 04-17 15:00 ?1084次閱讀

    Linux Shell腳本經(jīng)典案例分享

    ? 作為一名 Linux 運(yùn)維工程師,會寫好的腳本不僅能提高工作效率,還能有更多的時間做自己的事。最近在網(wǎng)上沖浪的時候,發(fā)現(xiàn)大家對Shell腳本都有“心結(jié)”,要么覺得自己寫出來不好看,要么根本無從下手。 下面分享249個真實(shí)
    發(fā)表于 06-16 14:03 ?649次閱讀
    Linux <b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>經(jīng)典案例分享

    如何利用shell進(jìn)行腳本程序的設(shè)計?

    利用Shell進(jìn)行腳本程序的設(shè)計可以按照以下步驟進(jìn)行: 選擇Shell解釋器:在Unix和Linux系統(tǒng)中,通常會默認(rèn)安裝一個或多個Shell
    的頭像 發(fā)表于 11-08 10:17 ?620次閱讀

    shell并行調(diào)用腳本

    Shell腳本中,可以使用一些技巧來實(shí)現(xiàn)并行調(diào)用。以下是幾種常見的方法: 使用后臺進(jìn)程:在Shell腳本中,可以使用"command2 上
    的頭像 發(fā)表于 11-08 10:23 ?948次閱讀

    Shell腳本檢查工具ShellCheck介紹

    ShellCheck是一個用于bash/sh shell腳本的靜態(tài)分析工具,可以輔助檢查腳本語法錯誤,給出建議增強(qiáng)腳本健壯性。
    的頭像 發(fā)表于 12-27 13:43 ?2101次閱讀
    <b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>檢查工具ShellCheck介紹

    Linux從零到精通:最簡單的Shell腳本入門教程

    通過簡單的命令和腳本實(shí)現(xiàn)對系統(tǒng)的靈活控制和自動化管理。 shell腳本前言 shell
    的頭像 發(fā)表于 12-05 09:56 ?389次閱讀
    Linux從零到精通:最簡單的<b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>入門教程
    RM新时代网站-首页