ChatGPT自出道以來,其出色的代碼能力被眾多程序員追捧,今天浩道就運(yùn)維工作中常見的日志分析場(chǎng)景,利用ChatGPT讓它通過Shell腳本來實(shí)現(xiàn)日志分析,并且附上人工寫的正確腳本。ChatGPT答案純?cè)醇右孕薷模慈ヲ?yàn)證是否正確,大家可以利用這個(gè)機(jī)會(huì)去驗(yàn)證其代碼能力,一起對(duì)比下吧!
1、通過shell分析網(wǎng)站日志,查看有多少個(gè)IP訪問?
人工答案:
awk '{print $1}' log_file|sort|uniq|wc -l
ChatGPT答案:
以下是一個(gè)簡(jiǎn)單的分析網(wǎng)站訪問日志并統(tǒng)計(jì)IP數(shù)量的腳本: #!/bin/bash # 設(shè)置日志文件名和路徑 log_file="/var/log/nginx/access.log" # 從訪問日志獲取所有的IP地址 ips=$(awk '{print $1}' "$log_file") # 使用uniq命令統(tǒng)計(jì)不同的IP地址數(shù)量 ip_count=$(echo "$ips" | sort | uniq | wc -l) # 輸出結(jié)果 echo "There are $ip_count unique IP addresses in the access log." 使用方法: 1. 將腳本保存到一個(gè)文件中,例如`count_ips.sh` 2. 使用`chmod +x count_ips.sh`命令添加可執(zhí)行權(quán)限 3. 在終端中運(yùn)行`./count_ips.sh`來分析網(wǎng)站訪問日志并統(tǒng)計(jì)IP數(shù)量
2、通過shell分析,查看一個(gè)網(wǎng)站某一個(gè)頁面被訪問的次數(shù):
人工答案:
grep "/index.php" log_file | wc -l
ChatGPT答案:
#!/bin/bash # 設(shè)置日志文件名和路徑 log_file="/var/log/nginx/access.log" # 設(shè)置需要統(tǒng)計(jì)的頁面URL page_url="/page.html" # 使用grep命令從訪問日志中查找包含指定頁面URL的訪問記錄,并用wc命令統(tǒng)計(jì)行數(shù)(即訪問次數(shù)) page_count=$(grep "$page_url" "$log_file" | wc -l) # 輸出結(jié)果 echo "The page $page_url has been accessed $page_count times." 使用方法: 1. 將腳本保存到一個(gè)文件中,例如`count_page.sh` 2. 使用`chmod +x count_page.sh`命令添加可執(zhí)行權(quán)限 3. 修改腳本中的`log_file`和`page_url`變量為對(duì)應(yīng)的值 4. 在終端中運(yùn)行`./count_page.sh`來分析網(wǎng)站訪問日志并統(tǒng)計(jì)某一個(gè)頁面被訪問次數(shù)
3、通過shell分析,查看每一個(gè)IP訪問了某個(gè)網(wǎng)站多少個(gè)頁面:
人工答案:
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答案:
以下是一個(gè)簡(jiǎn)單的分析網(wǎng)站訪問日志并統(tǒng)計(jì)每個(gè)IP訪問了某個(gè)網(wǎng)站多少個(gè)頁面的腳本: #!/bin/bash # 設(shè)置日志文件名和路徑 log_file="/var/log/nginx/access.log" # 設(shè)置需要統(tǒng)計(jì)的網(wǎng)站主機(jī)名或IP地址 hostname="example.com" # 使用grep命令從訪問日志中查找符合主機(jī)名或IP地址條件的訪問記錄,并使用awk命令提取IP地址和URL信息 ip_urls=$(grep "$hostname" "$log_file" | awk '{print $1,$7}') # 使用awk命令對(duì)提取的IP地址和URL信息進(jìn)行分組,并且統(tǒng)計(jì)每個(gè)IP對(duì)應(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. 將腳本保存到一個(gè)文件中,例如`count_ip_urls.sh` 2. 使用`chmod +x count_ip_urls.sh`命令添加可執(zhí)行權(quán)限 3. 修改腳本中的`log_file`和`hostname`變量為對(duì)應(yīng)的值 4. 在終端中運(yùn)行`./count_ip_urls.sh`來分析網(wǎng)站訪問日志并統(tǒng)計(jì)每個(gè)IP訪問了某個(gè)網(wǎng)站多少個(gè)頁面
4、通過shell分析,將每個(gè)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`:對(duì)提取出來的IP地址和訪問頁面進(jìn)行排序。 - `uniq -c`:對(duì)排序后的結(jié)果進(jìn)行去重,同時(shí)統(tǒng)計(jì)每個(gè)IP訪問每個(gè)頁面的次數(shù)。 - `sort -n`:對(duì)統(tǒng)計(jì)后的結(jié)果進(jìn)行排序,按照訪問次數(shù)從小到大排序。 運(yùn)行以上命令,即可得到每個(gè)IP訪問網(wǎng)站的頁面數(shù)從小到大排序的結(jié)果。
5、通過shell分析,查看2023年4月1日16時(shí)這一個(gè)小時(shí)內(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命令,過濾出日志文件中時(shí)間為2023年4月1日14時(shí)的所有日志記錄。 - `awk '{print $1}'`:使用awk命令,提取出過濾結(jié)果中的IP地址。 - `sort`:對(duì)提取出來的IP地址進(jìn)行排序。 - `uniq -c`:對(duì)排序后的結(jié)果進(jìn)行去重,同時(shí)統(tǒng)計(jì)每個(gè)IP出現(xiàn)的次數(shù)。 - `wc -l`:統(tǒng)計(jì)去重后的結(jié)果數(shù)量,即為2023年4月1日14時(shí)這一個(gè)小時(shí)內(nèi)訪問網(wǎng)站的IP數(shù)目。 運(yùn)行以上命令,即可得到2023年4月1日14時(shí)這一個(gè)小時(shí)內(nèi)訪問網(wǎng)站的IP數(shù)目。
結(jié)語:以上通過5道shell編程題目進(jìn)行大PK,大家覺得怎么樣?個(gè)人覺得ChatGPT除了給出答案,還附上了詳細(xì)的解題思路,這不就是我們?nèi)斯懘a時(shí)所分析的步驟嗎?但是它不是人啊!大家害怕了嗎?害怕是否會(huì)有哪一天會(huì)被AI取代?
審核編輯:劉清
-
編程
+關(guān)注
關(guān)注
88文章
3682瀏覽量
94881 -
代碼
+關(guān)注
關(guān)注
30文章
4887瀏覽量
70266 -
Shell
+關(guān)注
關(guān)注
1文章
372瀏覽量
23986 -
腳本
+關(guān)注
關(guān)注
1文章
397瀏覽量
28351 -
ChatGPT
+關(guān)注
關(guān)注
29文章
1588瀏覽量
8806
原文標(biāo)題:ChatGPT代碼能力有多強(qiáng)?看看它寫的這些shell腳本
文章出處:【微信號(hào):浩道linux,微信公眾號(hào):浩道linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
shell是什么?shell實(shí)現(xiàn)原理分析基于MM32 MCU的shell腳本源碼
Linux中執(zhí)行shell腳本的兩種方式

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

如何利用Shell腳本掩藏Linux服務(wù)器使用痕跡
嵌入式和物聯(lián)網(wǎng)的shell腳本學(xué)習(xí)指南之shell腳本入門免費(fèi)下載

109個(gè)實(shí)用shell腳本分享
shell腳本基礎(chǔ)知識(shí)
Linux Shell腳本經(jīng)典案例分享

如何利用shell進(jìn)行腳本程序的設(shè)計(jì)?
shell并行調(diào)用腳本
Shell腳本檢查工具ShellCheck介紹

Linux從零到精通:最簡(jiǎn)單的Shell腳本入門教程

評(píng)論