ChatGPT自出道以來,其出色的代碼能力被眾多程序員追捧,今天浩道就運(yùn)維工作中常見的日志分析場景,利用ChatGPT讓它通過Shell腳本來實(shí)現(xiàn)日志分析,并且附上人工寫的正確腳本。ChatGPT答案純原生未加以修改,未去驗(yàn)證是否正確,大家可以利用這個機(jī)會去驗(yàn)證其代碼能力,一起對比下吧!
1、通過shell分析網(wǎng)站日志,查看有多少個IP訪問?
人工答案:
awk '{print $1}' log_file|sort|uniq|wc -l
ChatGPT答案:
以下是一個簡單的分析網(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. 將腳本保存到一個文件中,例如`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分析,查看一個網(wǎng)站某一個頁面被訪問的次數(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. 將腳本保存到一個文件中,例如`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)計(jì)某一個頁面被訪問次數(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)計(jì)每個IP訪問了某個網(wǎng)站多少個頁面的腳本: #!/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命令對提取的IP地址和URL信息進(jìn)行分組,并且統(tǒng)計(jì)每個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)計(jì)每個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)計(jì)每個IP訪問每個頁面的次數(shù)。 - `sort -n`:對統(tǒng)計(jì)后的結(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)計(jì)每個IP出現(xiàn)的次數(shù)。 - `wc -l`:統(tǒng)計(jì)去重后的結(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取代?
審核編輯:劉清
-
編程
+關(guān)注
關(guān)注
88文章
3614瀏覽量
93686 -
代碼
+關(guān)注
關(guān)注
30文章
4779瀏覽量
68522 -
Shell
+關(guān)注
關(guān)注
1文章
365瀏覽量
23356 -
腳本
+關(guān)注
關(guān)注
1文章
389瀏覽量
14858 -
ChatGPT
+關(guān)注
關(guān)注
29文章
1558瀏覽量
7595
原文標(biāo)題:ChatGPT代碼能力有多強(qiáng)?看看它寫的這些shell腳本
文章出處:【微信號:浩道linux,微信公眾號:浩道linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論