練習1:html
一、提取 https://testing-studio.com/ 中的全部鏈接java
正則解釋:-o匹配出符合條件的內容 -E使用擴展 [s] 中括號表示範圍 表示匹配http或者https [^ '\"] 表示以空格 單引號或雙引號結尾的(直到匹配到這三個中的字符 即結束)curl https://testing-studio.com | grep -oE "http[s]://[^ '\"]*"
二、去掉連接中的數字,給出一個全部的不帶數字的鏈接linux
curl https://testing-studio.com | grep -oE "http[s]://[^ '\"]*「| sed -e's/[0-9]//g' -e's/%.*%.*//g'
‘s/[0-9]//g’ 表示把0-9數字用空替換
練習2:nginx
一、從shell服務器上的/tmp/nginx.log中找出全部404 500的報錯數據,並去除其中的url
①找出全部404 500的報錯數據shell
awk '$9~/404/ || $9~/500/' /tmp/nginx.log |less
匹配log文件中第九列爲404 或500的行
less 工具也是對文件或其它輸出進行分頁顯示的工具,應該說是linux正統查看文件內容的工具,功能極其強大。less 的用法比起 more 更加的有彈性。在 more 的時候,咱們並無辦法向前面翻,
只能日後面看,但若使用了 less 時,就能夠使用 [pageup] [pagedown] 等按鍵的功能來往前日後翻看文件,更容易用來查看一個文件的內容!除此以外,在 less 裏頭能夠擁有更多的搜索功能,
不止能夠向下搜,也能夠向上搜。
更多:https://www.cnblogs.com/peida/archive/2012/11/05/2754477.html
②去除其中的urlbash
awk '$9~/404/ || $9~/500/' /tmp/nginx.log | sed 's/"GET.*HTTP\/[0-9]\.[0-9]"//g'
練習3:服務器
一、找出訪問量最高的ipless
awk '{print $1}' /tmp/nginx.log |sort |uniq -c | sort -n |tail -10
篩選出log日誌中的第一列$1 ip
sort 它將文件進行排序,並將排序結果標準輸出
sort(選項)(參數)
-n:依照數值的大小排序;
-r:以相反的順序來排序;
-d:排序時,處理英文字母、數字及空格字符外,忽略其餘的字符;
uniq命令用於報告或忽略文件中的重複行,通常與sort命令結合使用。
uniq(選項)(參數)
-c或——count:在每列旁邊顯示該行重複出現的次數;
-d或--repeated:僅顯示重複出現的行列;
練習4:curl
一、找出訪問量最高的頁面,/topics/1234 topics/4567 視爲一個頁面函數
awk '{print $7}' /tmp/nginx.log |sort | sed 's/\/[0-9].*//g' |uniq -c |sort -n | tail -1
練習5:
提取 https://testing-studio.com/ 中的全部連接
找出不能被訪問的鏈接(已完成)
封裝爲函數,傳入一個網站,自動檢查這個網站上的連接(已完成)
#設計一個函數,傳入一個字符串或文件 根據判斷其中的連接返回code碼,找出其中的錯誤連接#!/bin/bash#author:FrankfindFailedUrl(){urls=$(curl $1 | grep -o -E "http[s]*://[^ ?'\"]*" | uniq -c);for url in $urls;do code=$(curl -I -m 10 -o /dev/null -s -w %{http_code} $url); if ((${code}>=400));then echo "${url}訪問失敗!";fidone}findFailedUrl https://testing-studio.com#$(curl -I -m 10 -o /dev/null -s -w %{http_code} $url)#-I 僅測試HTTP頭#-m 10 最多查詢10s#-o /dev/null 屏蔽原有輸出信息#-s silent 模式,不輸出任何東西#-w %{http_code} 控制額外輸出