linux nc命令參數及用法詳解之畢業紀
一、功能說明:強大的網絡工具netcat
二、語 法:nc [options]
[options]
-d 後台模式
-e prog 程序重定向,一旦連接,就執行 [危險!!]
-g <網關> 設置路由器躍程通信網關,最多可設置8個。
-G <指向器數目> 設置來源路由指向器,其數值為4的倍數。
-i <延遲秒數> 延時的間隔
-l 監聽模式,用於入站連接
-L 連接關閉後,仍然繼續監聽
-n 直接使用IP地址,而不通過域名服務器。
-o <輸出文件> 指定文件名稱,把往來傳輸的數據以16進制字碼傾倒成該文件保存。
-p <端口> 設置本地主機使用的通信端口。
-r 隨機本地及遠程端口
-s <源ip地址> 設置本地主機送出數據包的IP地址。
-t 使用TELNET交互方式
-u 使用UDP傳輸協議。
-v 詳細輸出(用兩個-v可得到更詳細的內容)
-w <超時秒數> 設置等待連線的時間,即指定多少秒後,斷開。
-z 使用0輸入/輸出模式,只在掃描通信端口時使用。
-h 幫助信息
主機名/ip 指定訪問的主機名/ip
port 監聽遠程主機的端口,可以是單個或范圍(M-N)。
nc [-hlnruz][-g<網關...>][-G<指向器數目>][-i<延遲秒數>][-o<輸出文件>][-p<通信端口>][-s<來源地址>][-v...][-w<超時秒數>][主機名稱][通信端口...]
三、應用
①端口掃描(常用於檢測某個ip的某個服務[端口]是否被監聽,即某服務是否啟動)
格式:
nc -v -w 2 -z $ip $port
-v 顯示指令執行過程。
-w <超時秒數> 設置等待連線的時間。
-z 使用0輸入/輸出模式,只在掃描通信端口時使用。
②遠程數據的傳輸(源主機---->目的主機($ip需監聽端口)。傳完後ctrl+c中斷連接,缺點:不知道什麼時候傳完)
格式:
遠程(目的)主機:nc -l $port > $file
源主機: nc $ip $port < $file
③簡單的及時聊天(需要在某台主機上,監聽端口$port,別的主機可以連接,進行聊天,Ctrl+c,Ctrl+d退出)
格式:
遠程(目的)主機:nc -l $port
源主機: nc $ip $port
④硬盤或分區(同②,源主機---->目的主機,克隆硬盤或分區的操作,不應在已經mount的的系統上進行。)
格式:
遠程(目的)主機:nc -l $port |dd of=分區
源主機: dd if=分區 | nc $ip $port
四、例子
①批量檢測服務器指定端口開放情況:
1、假如我們要監控一堆指定的IP和端口,可新建一個文件(第1列服務器IP,第2列要監控的端口)。
# vim /scripts/ip-ports.txt
192.168.0.100 80
192.168.0.100 8081
192.168.0.101 8082
192.168.1.100 21
2、我們可以寫這樣一個腳本來批量檢測端口是否開放:
# vim /scripts/ncports.sh
#!/bin/bash
#檢測服務器端口是否開放,成功會返回0值顯示ok,失敗會返回1值顯示fail
cat /scripts/ip-ports.txt | while read line
do
nc -w 10 -z $line > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo $line:ok
else
echo $line:fail
fi
done
3、執行腳本查看運行結果如下:
# chmod a+x /scripts/ncports.sh
# /scripts/ncports.sh
192.168.0.100 80:ok
192.168.0.100 8081:ok
192.168.0.101 8082:ok
192.168.1.100 21:fail