NetCat,在網絡工具中有“瑞士軍刀”美譽,其有Windows和Linux的版本。因爲它短小精悍(1.84版本也不過25k,舊版本或縮減版甚至更小)、功能實用,被設計爲一個簡單、可靠的網絡工具,可通過TCP或UDP協議傳輸讀寫數據。同時,它還是一個網絡應用Debug分析器,因爲它可以根據需要創建各種不同類型的網絡連接。
通常的Linux發行版中都帶有NetCat(簡稱nc),但不同的版本,其參數的使用略有差異。
NetCat 官方地址:http://netcat.sourceforge.net/
安裝
[root@server ~]# yum install -y nc [root@server ~]# rpm -q nc nc-1.84-22.el6.x86_64
版本參數簡介
語 法:nc [-hlnruz][-g<網關...>][-G<指向器數目>][-i<延遲秒數>][-o<輸出文件>][-p<通信端口>][-s<來源地址>][-v...][-w<超時秒數>][主機名稱][通信端口...]
補充說明:執行本指令可設置路由器的相關參數。
參 數:
-g<網關> 設置路由器躍程通信網關,最多可設置8個。
-G<指向器數目> 設置來源路由指向器,其數值爲4的倍數。
-h 在線幫助。
-i<延遲秒數> 設置時間間隔,以便傳送信息及掃描通信端口。
-l 使用監聽模式,管控傳入的資料。
-n 直接使用IP地址,而不通過域名服務器。
-o<輸出文件> 指定文件名稱,把往來傳輸的數據以16進制字碼傾倒成該文件保存。
-p<通信端口> 設置本地主機使用的通信端口。
-r 亂數指定本地與遠端主機的通信端口。
-s<來源地址> 設置本地主機送出數據包的IP地址。
-u 使用UDP傳輸協議。
-v 顯示指令執行過程。
-w<超時秒數> 設置等待連線的時間。
-z 使用0輸入/輸出模式,只在掃描通信端口時使用。
遠程拷貝文件
從server1拷貝文件到server2上。需要先在server2上,用nc激活監聽。
server2:
[root@server2 ~]# nc -l 1234 > 1234.txt
server1:
[root@server1 ~]# cat abc.txt abc.txtabc.txtabc.txtabc.txtabc.txtabc.txtabc.txtabc.txtabc.txt [root@server1 ~]# nc -w 1 192.168.200.27 1234 < abc.txt
已經傳送到server2
[root@server2 ~]# cat 1234.txt abc.txtabc.txtabc.txtabc.txtabc.txtabc.txtabc.txtabc.txtabc.txt
克隆硬盤或分區
操作與上面的拷貝是雷同的,只需要由dd獲得硬盤或分區的數據,然後傳輸即可。
克隆硬盤或分區的操作,不應在已經mount的的系統上進行。
#server2上進行類似的監聽動作:
[root@server2 ~]# nc -l -p 1234 | dd of=/dev/sda
#server1上執行傳輸,即可完成從server1克隆sda硬盤到server2的任務:
[root@server1 ~]# dd if=/dev/sda | nc 192.168.200.27 1234
端口掃描
[root@backup ~]# nc -v -w 1 192.168.200.29 -z 20-30 nc: connect to 192.168.200.29 port 20 (tcp) failed: Connection refused nc: connect to 192.168.200.29 port 21 (tcp) failed: Connection refused Connection to 192.168.200.29 22 port [tcp/ssh] succeeded! nc: connect to 192.168.200.29 port 23 (tcp) failed: Connection refused nc: connect to 192.168.200.29 port 24 (tcp) failed: Connection refused nc: connect to 192.168.200.29 port 25 (tcp) failed: Connection refused nc: connect to 192.168.200.29 port 26 (tcp) failed: Connection refused nc: connect to 192.168.200.29 port 27 (tcp) failed: Connection refused nc: connect to 192.168.200.29 port 28 (tcp) failed: Connection refused nc: connect to 192.168.200.29 port 29 (tcp) failed: Connection refused nc: connect to 192.168.200.29 port 30 (tcp) failed: Connection refused
聊天(呵呵,挺方便的。像QQ哦)
server2:
[root@server2 ~]# nc -l 1234
hello!
hi!
server1:
[root@server1 ~]# nc 192.168.200.27 1234 hello! hi!