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取代?
審核編輯:劉清
-
編程
+關注
關注
90文章
3716瀏覽量
97178 -
代碼
+關注
關注
30文章
4967瀏覽量
73954 -
Shell
+關注
關注
1文章
375瀏覽量
25372 -
腳本
+關注
關注
1文章
409瀏覽量
29192 -
ChatGPT
+關注
關注
31文章
1598瀏覽量
10264
原文標題:ChatGPT代碼能力有多強?看看它寫的這些shell腳本
文章出處:【微信號:浩道linux,微信公眾號:浩道linux】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
shell是什么?shell實現原理分析基于MM32 MCU的shell腳本源碼
Linux中執行shell腳本的兩種方式
如何利用Shell腳本掩藏Linux服務器使用痕跡
嵌入式和物聯網的shell腳本學習指南之shell腳本入門免費下載
shell腳本基礎知識
Linux Shell腳本經典案例分享
利用ChatGPT通過Shell腳本來實現日志分析
評論