Shell 中的netcat / nc 命令
Note: 本篇中服務器地址使用的是服務器節點的主機名: yanta 和 node
1、概述
netcat 所做的就是在兩臺電腦之間建立鏈接並返回兩個數據流,可以使用這個命令來傳輸數據文件等。不過今天主要說明這個命令在shell腳本中的使用,可以測試集羣中節點之間的網絡及端口連通狀況。
2、語法
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輸入/輸出模式,只在掃描通信端口時使用
3、用法示例
- 掃描端口,測試網絡
主要用來測試集羣中節點之間的網絡鏈接狀況。
# 測試tcp端口
[ root@yanta ~] # nc -vz node 22
Connection to node 22 port [ tcp/ssh ] succeeded!
# 測試UDP端口
[ root@yanta ~] # nc -uvz node 123
Connection to node 123 port [ udp/ntp ] succeeded!
- 節點間拷貝文件
例如 從 yanta 拷貝文件到 node:
# 首先在接收端 node上:
[ root@node ~] # nc -l 1234 > test.txt
# 然後在發送端 yanta 上:
[ root@yanta ~] # nc node < test.txt
# 注意:先運行接收端,指定一個端口爲1234,文件爲test.txt,再執行發送端,並且發送端必須存在同名的文件test.txt
- 簡單聊天
# 在 node 上:
[ root@node ~] # nc -l 1234
# 在 yanta 上:
[ root@yanta ~] # nc 192.168.1.2 1234
# 這樣,雙方就可以相互交流了。 使用ctrl+C(或D)退出