對一些經常用到的 shell 命令做簡要的總結,方便日後查閱。
tcpdump命令用來儲存和記錄網路流量,即抓包工具。你可以用它來觀察網路上發生了什麼,並可用來解決各種各樣的問題,包括和網路通訊無關的問題。
tcpdump 中的關鍵字主要有以下幾種
1.關於型別的關鍵字主要包括:host、net、port。如果沒有指定型別,預設的型別是host.
2.關於確定傳輸方向的關鍵字主要包括:src、dst、dst or src、 dst and src。如果沒有指明方向關鍵字,則預設是src or dst關鍵字
3.關於協議的關鍵字,主要包括ip、arp、rarp、tcp、udp、icmp等型別。如果沒有指定任何協議,則tcpdump將會監聽所有協議的資訊包。
4.其他重要的關鍵字:gateway, broadcast, less, greater。
5.三種邏輯運算:取非運算是'not ' ,'! ';與運算是'and','&&';或運算 是'or','││'。多條件時可以用括號,但是要用轉義。
注意:該工具使用sudo許可權去執行!
常用引數解析
引數含義
-w指定抓取到的資料報的儲存位置
-i指定抓取哪個網口的資料報,預設是 eth0
-s指定從乙個包中擷取的位元組數。0表示包不截斷,抓完整的資料報
-s將tcp的序列號以絕對值形式輸出,而不是相對值
-n指定將每個監聽到資料報中的網域名稱轉換成ip位址後顯示,不把網路位址轉換成名字
-nn指定將每個監聽到的資料報中的網域名稱轉換成ip、埠從應用名稱轉換成埠號後顯示
-c指定要抓取多少資料報,缺省會一直抓取,直到 ctrl+c
-v輸出乙個稍微詳細的資訊,例如在ip包中可以包括ttl和服務型別的資訊
-vv輸出詳細的報文資訊
-a以ascii格式列印出所有分組,並將鏈路層的頭最小化
-e列印出資料鏈路層的頭部資訊,包括源mac和目的mac,以及網路層的協議
-x把協議頭和包內容都原原本本的顯示出來(tcpdump會以16進製制和ascii的形式顯示)
-r從指定的檔案中讀取包(這些包一般通過-w選項產生)
舉個栗子
tcpdump -w /tmp/data -s0 -i eth0 port 3000 and host 127.0.0.1
截獲流經 eth0 網口,3000 埠,並且主機位址為 127.0.0.1 收到的和發出的所有的完整(不截斷)資料報,並將這些資料報儲存在 /tmp/data 檔案中。
tcpdump 'host 210.27.48.1 and (210.27.48.2 or 210.27.48.3)'
截獲主機 210.27.48.1 和主機 210.27.48.2 或 210.27.48.3 的通訊資料報。
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
獲取主機 210.27.48.1 除了和主機 210.27.48.2 之外所有主機通訊的ip包
資料報解析
抓到的資料報都會有乙個型別標識:
其他很容易弄懂,暫不解釋。
strace常用來跟蹤程序執行時的系統呼叫和所接收的訊號。 在 linux 世界,程序不能直接訪問硬體裝置,當程序需要訪問硬體裝置(比如讀取磁碟檔案,接收網路資料等等)時,必須由使用者態模式切換至核心態模式,通過系統呼叫訪問硬體裝置。strace 可以跟蹤到乙個程序產生的系統呼叫,包括引數,返回值,執行消耗的時間。
常用引數解析
引數含義
-o filename
將strace的輸出寫入檔案filename
-p pid
跟蹤指定的程序pid
-f跟蹤由fork呼叫所產生的子程序
-ff如果提供-o filename,則所有程序的跟蹤結果輸出到相應的filename.pid中,pid是各程序的程序號
-tt在輸出中的每一行前加上時間資訊,微秒級
-t顯示每一呼叫所耗的時間
-s strsize
指定輸出的字串的最大長度.預設為32.檔名一直全部輸出
lsof(list open files)是乙個檢視當前系統檔案的工具。在linux環境下,任何事物都以檔案的形式存在,通過檔案不僅僅可以訪問常規資料,還可以訪問網路連線和硬體。如傳輸控制協議 (tcp) 和使用者資料報協議 (udp) 套接字等,系統在後台都為該應用程式分配了乙個檔案描述符,該檔案描述符提供了大量關於這個應用程式本身的資訊。常用引數解析
引數含義
-p《程序號》
列出指定程序號所開啟的檔案
-i《條件》
列出符合條件的程序。(4、6、協議、:埠、 @ip )
-n不把網路位址轉換成名字
-p不轉換埠號,用數字表示
-c《程序名》
列出指定程序所開啟的檔案
-u user
某個使用者開啟的檔案
-d《檔案號》
列出占用該檔案號的程序
-g gid
某個使用者組開啟的檔案
輸出解析
一般在標準輸出、標準錯誤、標準輸入後還跟著檔案狀態模式:r、w、u等
(1)u:表示該檔案被開啟並處於讀取/寫入模式
(2)r:表示該檔案被開啟並處於唯讀模式
(3)w:表示該檔案被開啟並處於只寫模式
(4)空格:表示該檔案的狀態模式為unknow,且沒有鎖定
(5)-:表示該檔案的狀態模式為unknow,且被鎖定
更多引數解析請參考lsof 一切皆檔案
舉個栗子
lsof /bin/bash -u username
列出與/bin/bash
檔案相關的,且username
使用者開啟的程序
lsof -p 1223 -i tcp:8000 -n -p
列出 1223 程序在 8000 埠開啟的 tcp 連線,位址和埠保留數字,不做轉換
lsof -d 2-3
根據檔案描述列出對應的檔案資訊
pidof用於找出正在執行的程式的程序pid(用空格分割),程式可以是乙個二進位制執行程式,也可以是乙個shell指令碼。
-s 引數只列出乙個
tr用來從標準輸入中通過替換或刪除操作進行字元轉換.
常用引數
引數含義
-d刪除所有屬於第一字符集的字元
-s把連續重複的字元以單獨乙個字元表示
舉個栗子
echo "hello world" | tr 'a-z' 'a-z'
將大寫字母轉換成小寫字母
echo "hello 123 world 456" | tr -d '0-9'
從字串中刪除數字
echo "hello world" | tr " " ,
空格換成逗號
to be continued...
tcpdump引數解析及使用詳解
乙份快速實用的 tcpdump 命令參考手冊
常用shell命令
1 cat 列印檔案的內容 2 cd 改變目錄 3 chmod 修改檔案訪問許可權 4 cp 複製檔案 5 du 輸出磁碟的使用情況 6 emacs 文字編輯器 7 find 搜尋查詢檔案 8 gcc c c fortran 編譯器 9 grep 在輸入中查詢乙個串 10 less 輸出頁面過濾器 ...
常用shell語法
if語句system uname s if system linux then echo linux elif system darwin then echo darwin else echo what?fifor語句for i 1 i 10 i doecho done for i in seq 1...
常用shell命令
根據功能進行分類記憶 passwd 設定指定使用者密碼 exit 登出當前登入使用者 useradd user add 建立乙個新用pwd戶 ubuntu系統中可以使用更方便和強大的adduser命令 userdel user delete 刪除乙個已存在的使用者 usermod user modi...