在工作過(guò)程中,我們經(jīng)常需要上傳文件到服務(wù)器或者從服務(wù)器下載文件到本機(jī),這時(shí)大家首先想到的是用scp或者rz、sz等上傳下載工具,但是有時(shí)候公司基于生產(chǎn)環(huán)境安全性的考慮,禁用了這些功能,或者未安裝這些工具。這時(shí),我們?nèi)绾蝺?yōu)雅的實(shí)現(xiàn)文件的復(fù)制(上傳)和下載呢?
文件復(fù)制
文件復(fù)制,我們可以使用NetCat命令來(lái)實(shí)現(xiàn)。NetCat,在網(wǎng)絡(luò)工具中有“瑞士軍刀”美譽(yù),其有Windows和Linux的版本。因?yàn)樗绦【罚?.84版本也不過(guò)25k,舊版本或縮減版甚至更小)、功能實(shí)用,被設(shè)計(jì)為一個(gè)簡(jiǎn)單、可靠的網(wǎng)絡(luò)工具,可通過(guò)TCP或UDP協(xié)議傳輸讀寫(xiě)數(shù)據(jù)。同時(shí),它還是一個(gè)網(wǎng)絡(luò)應(yīng)用Debug分析器,因?yàn)樗梢愿鶕?jù)需要?jiǎng)?chuàng)建各種不同類(lèi)型的網(wǎng)絡(luò)連接。下面我簡(jiǎn)單介紹一下使用nc實(shí)現(xiàn)文件復(fù)制的方式。
1.在目標(biāo)服務(wù)器上開(kāi)啟監(jiān)聽(tīng) :nc -l port > filename

2.待復(fù)制文件所在的機(jī)器,向目標(biāo)機(jī)器發(fā)送文件: nc ip port < filename

這樣,我們就可以實(shí)現(xiàn)機(jī)器之間文件的復(fù)制了。
文件下載
文件下載功能,我們可以python命令來(lái)實(shí)現(xiàn)。利用Python自帶的包可以建立簡(jiǎn)單的web服務(wù)器,然后在需要下載文件的機(jī)器上使用wget工具下載文件。
1.在shell里cd到準(zhǔn)備做服務(wù)器根目錄的路徑下,輸入命令:
python -m Web服務(wù)器模塊 [端口號(hào),默認(rèn)8000]
例如,我們要下載目錄intelligent/下文件mLualib.so,我們需要先進(jìn)入到該目錄,然后執(zhí)行
python -m SimpleHTTPServer 8080
如圖所示

2.登錄到待下載文件的機(jī)器上,執(zhí)行
wget http://10.213.41.71:11111/mLualib.so
如圖所示:

這樣,就能把文件mLualib.so下載到本地了。
nc常用參數(shù)
nc [-hlnruz][-g<網(wǎng)關(guān)...>][-G<指向器數(shù)目>][-i<延遲秒數(shù)>][-o<輸出文件>][-p<通信端口>][-s<來(lái)源位址>][-v...][-w<超時(shí)秒數(shù)>][主機(jī)名稱(chēng)][通信端口...]
參數(shù)說(shuō)明:
-g<網(wǎng)關(guān)> 設(shè)置路由器躍程通信網(wǎng)關(guān),最丟哦可設(shè)置8個(gè)。
-G<指向器數(shù)目> 設(shè)置來(lái)源路由指向器,其數(shù)值為4的倍數(shù)。
-h 在線幫助。
-i<延遲秒數(shù)> 設(shè)置時(shí)間間隔,以便傳送信息及掃描通信端口。
-l 使用監(jiān)聽(tīng)模式,管控傳入的資料。
-n 直接使用IP地址,而不通過(guò)域名服務(wù)器。
-o<輸出文件> 指定文件名稱(chēng),把往來(lái)傳輸?shù)臄?shù)據(jù)以16進(jìn)制字碼傾倒成該文件保存。
-p<通信端口> 設(shè)置本地主機(jī)使用的通信端口。
-r 亂數(shù)指定本地與遠(yuǎn)端主機(jī)的通信端口。
-s<來(lái)源位址> 設(shè)置本地主機(jī)送出數(shù)據(jù)包的IP地址。
-u 使用UDP傳輸協(xié)議。
-v 顯示指令執(zhí)行過(guò)程。
-w<超時(shí)秒數(shù)> 設(shè)置等待連線的時(shí)間。
-z 使用0輸入/輸出模式,只在掃描通信端口時(shí)使用。
相關(guān)閱讀:
Linux查看實(shí)時(shí)網(wǎng)卡流量的幾種方式
本文首發(fā)在 劉振鋒的簡(jiǎn)書(shū)博客 原文地址為《如何優(yōu)雅的實(shí)現(xiàn)文件上傳或下載》轉(zhuǎn)載請(qǐng)注明!