ngrep工具是grep指令的網絡版,ngrep用于抓包,并可以通過正規表達式,過濾、擷取指定樣式的資料包。能識别TCP、UDP和ICMP協定,了解bpf的過濾機制。
可以用來分析、定位服務中的問題。
因為如果包含多個服務的大型服務出現問題,需要逐漸分析定位問題到具體的服務。使用ngrep抓包可以确定資料包是否已經到了某個服務子產品,進而定位是哪個部分的問題。
Mac:<code>brew install ngrep</code>
其它平台
-q :不顯示包的詳情,都以‘#’ 号代替現實
-e :顯示空資料包
-i :忽略大小寫
-v :反轉比對
-R :don't do privilege revocation logic
-x :以16進制格式顯示
-X :以16進制格式比對
-w :整字比對
-p :不使用混雜模式
-l :make stdout line buffered
-D :replay pcap_dumps with their recorded time intervals
-t :在每個比對的包之前顯示時間戳
-T :顯示上一個比對的資料包之間的時間間隔
-M :僅進行單行比對
-I :從檔案中讀取資料進行比對
-O :将比對的資料儲存到檔案
-n :僅捕獲指定數目的資料包進行檢視
-A :比對到資料包後dump随後的指定數目的資料包
-s :set the bpf caplen
-S :set the limitlen on matched packets
-W :設定顯示格式byline将解析包中的換行符
-c :強制顯示列的寬度
-P :set the non-printable display char to what is specified
-F :使用檔案中定義的bpf(Berkeley Packet Filter)
-N :顯示由IANA定義的子協定号
-d :使用哪個網卡,可以用-L選項查詢
-L :查詢網卡接口
注意:需要以超級管理者身份執行該指令
<code>ngrep host 192.168.1.8 udp</code>:抓udp包
<code>ngrep -W byline -qd any '.event' udp port 1514</code>:抓取1514端口udp包,過濾正則比對包含‘event’字段的包
<code>ngrep -W byline 'GET /' 'tcp and dst port 80' -d eth1 | awk -v RS="#+" -v FS="\n" 'length() > 1000'</code>:查詢大于1k的請求頭
<code>ngrep -d en0 -W byline host 192.168.1.9</code>:抓取本地 en0 和 61.135.169.125(百度ip)的通信資訊,并以行列印出來