例項演示,帶你瞭解終端神器ncat
終端神器ncat例項演示
之前在伺服器上拷貝檔案時,要麼使用scp, 要麼就是上傳到ftp伺服器,然後再需要使用的伺服器上重新下載,雖然這兩種方式也沒啥毛病,但是缺陷也比較明顯
• scp: 要求授權驗證 • ftp: 需要一個第三方的儲存系統,用完之後如果不刪除的話這個檔案就一直在那
接下來介紹下使用ncat(即nc)來實現檔案拷貝
nc知識點
1. 基本說明 & 安裝
ncat/nc 是一個類似於cat的網路命令,常用語網路讀、寫、重定向;它提供的功能非常強大,本文介紹一下將介紹一下基本使用姿勢與應用場景
首先判斷系統是否有安裝
• ubuntu 預設有這個命令 • centos 需要自己安裝
# 判斷是否有安裝 ncat命令
which ncat
# which nc 也可以判斷是否安裝有這個命令
若沒有安裝,執行下面的命令
sudo yum install nc -y
# yum install nmap-ncat -y
2. 監聽埠連結
監聽本機某個埠,相當於起了一個網路服務
# nc -l 埠號
nc -l 9999
注意
•
上面預設監聽的是tcp埠
•
如需指定udp,可以通過 nc -l -u 9999
3. 連線遠端伺服器
# nc ip 埠號
nc 127.0.0.1 9999
# 如果需要連結的是udp埠,可以加一個 -u
連上之後,就可以傳送資訊(回車之後服務端會接收到客戶端的傳輸資料)
3. nc檔案拷貝
基於上面的case,可以利用nc來實現檔案拷貝
目標伺服器,啟動一個埠監聽
nc -l 9999 > save.txt
檔案所屬伺服器,用於上傳檔案
nc 127.0.0.1 9999 < data.txt
說明
•
上面這個也可以走udp埠進行檔案傳輸,加上 -u
即可
•
流程也可以反過來,在檔案所屬伺服器上監聽埠,目標伺服器用於下載檔案 (上面的方式適用於檔案所屬伺服器限制了訪問埠的場景;下面這種這種適用於目標伺服器ip不確定的case)
# 檔案所屬伺服器
nc -l 9999 < data.txt
# 下載檔案的伺服器
nc 127.0.0.1 9999 > save.txt
4. nc作為代理
使用nc作為一個簡單的轉發
ncat -l 8080 | ncat 192.168.0.2 80
上面這個命令實現單向的轉發,將連結到本機8080的連線轉發到 192.168.0.2:80
如果希望實現雙向管道,可以如下
mkfifo 2way
ncat -l 8080 0<2way | ncat 192.168.0.2 80 1>2way
除了上面的代理方式,也可以利用nc來實現埠轉發,藉助 -c
命令
ncat -u -l 80 -c 'ncat -u -l 8080'
5. 小結
nc常用於伺服器之間的網路資料傳輸,其基本引數如下 (通過 nc -h
獲取)
-4 使用IPV4
-6 使用IPV6
-c, --sh-exec <command> 接收到的命令通過command(例如/bin/bash)執行
-e, --exec <command> 和-c差不多
--lua-exec <filename> 接收到的資料通過指令碼filename執行
-m, --max-conns <n> 最大併發連線數(單獨開啟不生效,需配合--keep-open/--broker使用)
-d, --delay <time> 讀寫收發間隔時間
-o, --output <filename> 將會話資料轉儲到檔案
-i, --idle-timeout <time> 讀寫超時時間
-p, --source-port port 指定連線使用的源埠號(client端使用)
-s, --source addr 客戶端指定連線伺服器使用的ip(client端使用)
-l, --listen 繫結和監聽接入連線(server端使用)
-k, --keep-open 在監聽模式中接受多個連線(配合-m使用)
-n, --nodns 不使用DNS解析主機名
-t, --telnet 響應telnet連線
-u, --udp 使用udp協議,預設tcp
-v, --verbose 顯示詳細資訊
-w, --wait <time> 連線超時時間
--allow 允許指定主機連線
--allowfile 允許指定檔案內的主機連線
--deny 拒絕指定主機連線
--denyfile 拒絕指定檔案內的主機連線
--broker 啟用代理模式
--proxy <addr[:port]> 指定代理主機ip和port
--proxy-type <type> 指定代理型別("http" or "socks4")
--proxy-auth <auth> 代理身份驗證
常用的命令 -l
用於監聽一個埠號, -v
用於顯示連線詳情, -u
表示監聽udp埠
本文給出了兩個簡單的例項
• 檔案傳輸 • 請求轉發
一灰灰的聯絡方式
盡信書則不如無書,以上內容,純屬一家之言,因個人能力有限,難免有疏漏和錯誤之處,如發現bug或者有更好的建議,歡迎批評指正,不吝感激
• 個人站點:http://blog.hhui.top • 微博地址: 小灰灰Blog [1] • QQ:一灰灰/3302797840 • 微信公眾號: 一灰灰blog
References
[1]
小灰灰Blog: http://weibo.com/p/1005052169825577/home
- 基於MySql,Redis,Mq,ES的高可用方案解析
- 1w5字詳細介紹分散式系統的那些技術方案
- 程式設計師的浪漫:三十行程式碼實現用她的名字作幅畫
- 【WEB系列】內嵌Tomcat配置Accesslog日誌檔案生成位置原始碼探索
- 【搜尋系列】ES查詢常用例項演示
- 【搜尋系列】ES文件基本操作CURD例項演示
- 【搜尋系列】ES基本專案搭建
- Nosql儲存系統-叢集工作原理
- 例項演示,帶你瞭解終端神器ncat
- Redis:你真的會Redis麼,一文告訴你如何學習
- 常用設計模式彙總,告訴你如何學習設計模式
- 微服務閘道器:從對比到選型,由理論到實踐
- 【WEB系列】從0到1實現自定義web引數對映器
- SpringBoot系列Mybatis之批量插入的幾種姿勢
- SpringBoot系列Mybatis之ResultMap、ResultType返回結果使用姿勢
- 【DB系列】Mybatis之批量插入的幾種姿勢
- 【DB系列】Mybatis之ResultMap、ResultType返回結果使用姿勢
- 【中介軟體】Prometheus基於AOP實現埋點採集上報
- JDNI注入:RMI之繞過trustURLCodebase配置的注入例項演示三
- JDNI注入:RMI Reference引起的注入case二