首頁 > 運維 > linux運維 > 主體

什麼是Linux系統中nc指令? nc指令的用法詳解

伊谢尔伦
發布: 2017-05-30 15:01:20
原創
10244 人瀏覽過

這篇文章主要介紹了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
登入後複製
Connection to 172.16.211.34 68 port [udp/bootpc] succeeded!

#

以上是什麼是Linux系統中nc指令? nc指令的用法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板