天天看點

[linux]ngrep指令、常見用法

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() &gt; 1000'</code>:查詢大于1k的請求頭

<code>ngrep -d en0 -W byline host 192.168.1.9</code>:抓取本地 en0 和 61.135.169.125(百度ip)的通信資訊,并以行列印出來

繼續閱讀