這篇文章主要介紹了Linux系統中nc命令的基本用法,nc命令非常之強大,這裡先簡單介紹它用來作端口掃描以及文件傳輸等的基礎使用。
功能說明:強大的網路工具<( ̄▽ ̄)>,在網路工具中有「瑞士軍刀」美譽,其有Windows和Linux的版本。因為它短小精悍,功能實用,被設計為一個簡單、可靠的網路工具,可透過TCP或UDP協定傳輸讀寫資料。同時,它也是一個網頁應用程式Debug分析器,因為它可以根據需要建立各種不同類型的網路連線。
nc可以提供如下的網路功能:
1) 監聽特定連接埠,這時候nc就可以作為一個伺服器,但是我發現這樣使用nc產生的伺服器僅僅是一個echo伺服器而已,沒有其他更加強大的功能.
2) 連接特定連接埠,這時候nc就成為了一個客戶端,同樣的,也是一個簡單的客戶端,只能起echo的作用.
3) 掃描埠,這可以作為查詢某個機器上是否開啟了某個連接埠.
幾個特定的使用範例
範例1:
使用nc開啟linux下的特定連接埠
nc -lp 23 &(即telnet)
netstat -an|grep 23(查看連接埠是否正常開啟)
範例2:
使用nc進行檔案傳輸,指令
ssh root@www.freetstar. com “( nc -l 10003 > destination 2>/dev/null & )” && cat source | nc www.freetstar.com 10003
&& 前邊ssh登入遠端主機www.freetstar.com上,用nc指令打開本地的10003端口,成為後台進程
&&後邊,在本地機器上打開source文件,並將其重定向到www.freetstar.com的10003號端口,也就是讓遠程www.freetstar.com主機10003號碼埠接收source檔案
範例3:
使用nc掃描linux下的特定連接埠
nc -v -z host.example.com 70-80
掃描連接埠(70到80 ),可指定範圍。 -v輸出詳細資料。
範例4:
複製硬碟或分割區
類似範例2,只需要由dd取得硬碟或分割區的數據,然後傳輸即可。
複製硬碟或分割區的操作,不應在已經mount的的系統上進行。所以,需要使用安裝光碟開機後,進入拯救模式(或使用Knoppix工具光碟)啟動系統後
server1上執行:# nc -l -p 1234 | dd of=/dev/sda
server1上執行1234號埠監聽,將得到的檔案儲存到/dev/sda上
server2上執行:# dd if=/dev/sda | nc server1 1234
#範例5:
儲存Web頁面
while true; do nc -l -p 80 -q 1 < somepage.html; done
範例6:
模擬HTTP Headers
[root@hatest1 ~]# nc www .huanxiangwu.com 80
GET / HTTP/1.1
Host: ispconfig.org
Referrer: mypage.com
User-Agent: my-browser
在nc指令後,輸入紅色部分的內容,然後按兩次回車,即可從對方取得HTTP Headers內容。
範例7:
聊天
server1上監聽1234連接埠[root@hatest2 tmp]# nc -lp 1234
server2上向server1的1234連接埠發送訊息[root@hatest1 ~] # nc server1 1234
這樣,雙方就可以互相交流了。使用Ctrl+D正常退出。
更多的使用,請查看man手冊
nc example.host port 開啟與example.host主機的port的一個TCP連結。如果連結失敗,不顯示任何錯誤訊息,僅僅退出
# nc -p 31337 -w 5 example.host 42 開啟與example。 host主機的42號連接埠的一個TCP連結。用31337當來源埠,逾時連結時間為5秒
nc -u example.host 53 指定協定為udp協定
語法: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輸入/輸出模式,只在掃描通訊埠時使用。
來看它的基本用法:
1.監聽本地埠
root@10.1.1.43:~# nc -l -p 1234 root@10.1.1.43:~# netstat -tunlp | grep 1234
tcp 0 0 0.0.0.0:1234 LISTEN 15543 /nc
2.連接埠掃描
root@10.1.1.43:~# nc -v -w 10 10.1.1.180 80
(UNKNOWN) [10.1.1.180] 80 (www) open
root@10.1.1.43:~# nc -v -w 10 10.1.1.180 -z 80-30000
(UNKNOWN) [10.1 .1.180] 22000 (?) open
(UNKNOWN) [10.1.1.180] 80 (www) open
3.檔案傳出
來源10.1.1.43 text.txt
目的10.1.1.180
root@10:~# nc -l -p 1234 > test.txt #开10.1.1.180:1234端口监听,并将socket传输过来的数据重定向到test.txt文件 test 43 nc root@10.1.1.43:~#cat test.txt root@10.1.1.43:~# nc 10.1.1.180 1234 < test.txt #连接远程的10.1.1.180,从test.txt的路径从定向到socket,从而将文件传输到远方。 root@10:~# cat test.txt test 43 nc
4.目錄傳輸
來源10.1.1.43 python_program
目的10.1.1.180
root@10:~# nc -l -p 1234 | tar xzvf - root@10.1.1.43:~# tar czvf - python_program | nc 10.1.1.180 1234
python_program/
python_program/1.py
python_program/4.py
python_program/3.py
#5.測試UDP埠
root@172.16.211.34:web# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address 0 0 0.0.0.0:22 1111/sshd
udp 0 0 0.0.0.0:68 887/dhclient
root@172.16.211.35:~# nc -vuz 172.16.211.34 68
#
以上是什麼是Linux系統中nc指令? nc指令的用法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!