『壹』 關於FTP利用BAT和變數批量的問題
請把%1%和%2%改成%1和%2
在bat參數傳值中,使遲源用的櫻含變數為%1至%9,脊旦笑它們不需要在數字後面額外的添加%
『貳』 ftp批處理命令中遠程目錄可以是變數么
設置變數那2行不要輸出到ftp腳本文件巧頌
@echo off
@echo open 134.175.***.**>>crm.txt
@echo root>>crm.txt
@echo root>>crm.txt
set "i=/核衡was"改寬做
set "j=/0523"
echo cd %i%%j% >>crm.txt
@echo lcd C:\新建文件夾\11>>crm.txt
@echo send test.rar>>crm.txt
ftp -s:crm.txt
del crm.txt
『叄』 各位高手,誰能告訴我建立FTP的詳細方法
建立個人FTP伺服器教程 以及 內網、區域網設置IP,建立FTP
【怎樣建立個人FTP】
Serv-U FTP Server 5.0.0.11 final 特別破解版漢化版
點擊下載
《FTP Serv-U 教程》+《FTP的建立和維護手冊》
點擊下載
在網上做過軟體下載的人都知道,建立一個FTP下載伺服器相對比較簡單,一般用WIN2000下自帶的IIS就可以,但IIS在功能上好多都不盡人如意,下面我就介紹一款功能非常強大,但使用簡單的FTP伺服器構建軟體-Serv-U FTP Server,讓我們也來體驗一下自己DIY FTP伺服器的快樂! 在說明使用之前,讓我先大致介紹一下Serv-U(本文中提到Serv-U版本為3.0.0.17), Serv-U 是一個可以運行於Windows 95/98/2000/ME 和 Windows NT 4.0下的FTP伺服器程序如圖所示,
有了它,你的個人電腦就可以模擬為一個FTP伺服器,也就是說,你所連接的網路中的計算機用戶可以訪問你的個人電腦,通過FTP協議(文件傳輸協議)復制、移動、刪除你的電腦中的文件或文件夾,可以做一切許可權所允許的事情。FTP協議規定了計算機之間的標准通訊方式,使所有不同類型,不同操作系統,不同格式的電腦之間得以互換文件。它可以用最簡單的方式創建用戶帳號,並且在硬碟空間上劃分一定的區域用以存放文件,讓用戶以各種FTP客戶端軟體(如CuteFTP、WS_FTP等)上傳或下載所需要的文件。
有許多FTP伺服器和客戶端軟體可用於不同的系統中,Serv-U是用於運行MS-Windows 並且已安裝了WinSock 版本 1.1 兼容 TCP/IP協議的個人電腦中的,這幾乎包括了所有的Windows操作系統。
Serv-U由兩大部分組成,引擎和用戶界面。Serv-U引擎(ServUDaemon.exe)其實是一個常駐後台的程序,也是Serv-U整個軟體的心臟部分,它負責處理來自各種FTP客戶端軟體的FTP命令,也是負責執行各種文件傳送的軟體。在運行Serv-U引擎也就ServUDaemon.exe
文件後,我們看不到任何的用戶界面,它只是在後台運行,通常我們無法影響它,但在ServUAdmin.exe中我們可以停止和開始它。Serv-U引擎可以在任何Windows平台下作為一個本地系統服務來運行,系統服務隨操作系統的啟動而開始運行,而後我們就可以運行用戶界面程序了。在Win NT/2000系統中,Serv-U會自動安裝為一個系統服務,但在Win 9x/Me中,你需要在「伺服器」面板中選擇「自動開始」,才能讓它轉為系統服務。Serv-U用戶界面(ServUAdmin.exe)也就是Serv-U管理員,它負責與Serv-U引擎之間的交互。它可以讓用戶配置 Serv-U,包括創建域、定義用戶、並告訴伺服器是否可以訪問。啟動Serv-U管理員最簡單的辦法就是直接點接系統欄的「U」形圖標,當然,你也可以從開始菜單中運行它。
在此有必要把Serv-U中的一些重要的概念給大家講清楚:每個正在運行的Serv-U引擎可以被用來運行多個「虛擬」的FTP伺服器,在管理員程序中,每個「虛擬」的FTP伺服器都稱為「域」,因此,對於伺服器來說,不得不建立多個域時是非常有用的。每個域都有各自
的「用戶」、「組」和設置。一般說來,「設置向導」會在你第一次運行應用程序時設置好一個最初的域和用戶帳號。伺服器、域和用戶之間的關系大家可以參考下表:
*Serv-U 伺服器
*域 1
*用戶帳號 1
*用戶帳號 2
*用戶帳號 3
*域 2
*用戶帳號 1
*用戶帳號 2
*域 3
*用戶帳號 1
*用戶帳號 1
這個表有點類似與Serv-U管理員中伺服器、域和用戶的排列。
Serv-U FTP Server 是試用軟體,安裝後三十天內,你可以作為「專業版本」使它,但試用期過後,你就只能作為免費的「個人版
本」使用了,只有基本功能了。
好了,說了這么多,還沒到關鍵部分-如何自己來建立FTP伺服器。下面我就一步一步來說明。
一、 安裝原版軟體和漢化補丁,這個過程就不多說了,想必沒人不會的。
二、 建立第一個本地FTP伺服器
安裝完成後程序會自動運行,你也可以在菜單中選擇運行。
1、 第一次運行程序,它會彈出設置向導窗口如圖,
將會帶你完成最初的設置,
2、 單擊「下一步」,出現「顯示菜單圖像」的窗口,問你是否在菜單中顯示小圖像,看各人喜歡了;
3、 單擊「下一步」,這個窗口是讓你在本地第一次運行FTP伺服器,只要「下一步」就行了。
4、 接下來要你輸入你的IP地址如圖,
如果你自己有伺服器,有固定的IP,那就請輸入IP地址,如果你只是在自己電腦上建立FTP,而且又是撥號用戶,有的只是動態IP,沒有固定IP,那這一步就省了,什麼也不要填,Serv-U 會自動確定你的IP地址,「下一步」;
5、 在這兒要你輸入你的域名,如圖
如果你有的話,如:ftp.abc.com,沒有的話,就隨便填一個;
6、 「下一步」,詢問你是否允許匿名訪問如圖
一般說來,匿名訪問是以Anonymous為用戶名稱登錄的,無需密碼,當然如果你想成立一個會員區什麼的,就應該選擇「否」,不讓隨便什麼人都可以登錄,只有許可用戶才行,在此我們填「是」;
7、 「下一步」,問你匿名用戶登錄到你的電腦時的目錄,如圖,
你可以自己指定一個硬碟上已存在的目錄,如F:\temp\xyz;
8、 「下一步」,詢問你是否要鎖定該目錄,鎖定後,匿名登錄的用戶將只能認為你所指定的目錄(F:\temp\xyz)是根目錄,也就是說他只能訪問這個目錄下的文件和文件夾,這個目錄之外就不能訪問,對於匿名用戶一般填「是」;
9、 「下一步」,詢問你是否創建命名的帳號,也就是說可以指定用戶以特定的帳號訪問你的FTP,這對於辦會員區可很有用哦,你可以對於每個人都創建一個帳號,每個帳號的許可權不同,就可以不同程序地限制每個人的權利,方法將在後面講到,這里選擇「是」;
10、 「下一步」,請你填入所要建立的帳號的名稱,如圖,如:ldr,
11、 「下一步」,請輸入密碼,如:123,
12、 「下一步」,詢問登錄目錄是什麼,這一步與第7步一樣,如:F:\temp
13、 「下一步」,詢問你是否要鎖定該目錄,同第8步,這里選擇「否」;
14、 接下來詢問你這次創建的用戶的管理員許可權,如圖,
有幾項選擇:無許可權,組管理員,域管理員,只讀管理員和系統管理員,每項的許可權各不相同;這里選擇「系統管理員」;
15、 最後一步,點擊「完成」就OK了,你有什麼需要修改的,可以點「上一步」,或者進入Serv-U管理員直接修改。至此,我們建立
了一個域ftp.abc.com,兩個用戶,一個Anonymous,一個ldr。
三、 既然我們已經建立好FTP伺服器,那麼我們就應該可以用FTP客戶端軟體來嘗試登錄。
怎麼辦呢?其實很簡單,我們不用上網,就可以測試。我們知道,不上網時,本地機的IP地址默認就為127.0.0.1,FTP埠號為21。打開FTP客戶端軟體,我就用FlashFXP來說明,打開快速連接,填入相應內容,如圖
然後連接,如圖
可以看到,我左邊窗格以Anonymous登錄,右邊窗格以ldr登錄,由於是本地機,所以速度奇快,上網後,假如我要讓你登錄到我的電腦上,我只要把我的上網時的IP地址給你,你就可以匿名訪問我的電腦了(注意不要開防火牆),是不是很方便?
四、Serv-U管理員中的各項設置
在設置完成後,將會進入Serv-U管理員的主界面,如圖
左邊窗格中顯示各個欄目,右邊窗格中顯示各個欄目的具體選項,下面就大概講一講設置內容。
1、 在圖中,我們可以人為地控制Serv-U引擎的運行或停止,記住,在Win 9x/Me 中,我們就要在此選擇「系統服務」,才會運行
Serv-U引擎。
2、 「許可」,如果你花美元買了注冊號,就可以在此輸入。
3、 「設置」,這個設置是對於「本地伺服器」來說的。「常規」設置中,如圖
可以限制伺服器的最大速度,可以攔截FXP(站點到站點傳送),也可以限制用戶的數量,這樣不至於你的伺服器被拖跨。「目錄緩存」設置中,如圖
允許你自己確定目錄列表的個數以及超時時間,在Windows 95 和 NT下,目錄列表默認設置為25,當緩存滿了之後,新的請求將替換老的請求。「高級」設置中,如圖
可以讓你自己定義伺服器、Socket、文件的上傳和下載的各項設置。
4、 「活動」,在這里記錄了用戶的活動日誌,已封鎖的IP的活動日誌,以及任務日誌;任務日誌中顯示的就是你開始停止的各項操作記錄,你可以點擊右擊,選擇一此過濾文本,使其只顯示你所想見的內容,如圖
5、 「域」,這里包含了你一開始根據向導所建立的用戶、設置、域等。「域--設置」中所設置的內容其實與第3步差不多,只是它更
加具體,可以對於每一個不同域定製。「域--活動」中記載了這個域下所有用戶的活動情況。
6、 「域--組」,我們可以自己建立一些便於管理的組,然後把一類的用戶歸到一個組中。
7、 「域--用戶」中,大家可以看到一開始我們建立的兩個帳號,一個Anonymous,一個ldr。現在就帳號ldr來對其中的細節設置說明一下。
A、「帳號」欄,如圖
對於一些不守規則的人,我們可以選擇「禁用帳號」,雖然有帳號,但可以使用戶一時間無法登錄;你也可以設置讓程序到達某個日期後自動刪除某個帳號;下面幾欄是這個帳號的基本信息,我們都可以在此更改,其中密碼改過後並不顯示,而是統一顯示<>,特別要注意選項「鎖定用戶於主目錄」,什麼意思呢?大家應該碰到,每次我們登錄到FTP伺服器上後,在根目錄下只顯示「/」,選擇這項選項後,就是這樣,如果不選,會出現什麼情況呢?你可以做一下試驗,在根目錄下將顯示「/f:/temp/」,也就是說顯示了你硬碟中的絕對
地址,這在某些情況下是很危險的,有不懷好意的高手,你就麻煩了!
你可以隱藏屬性為隱藏的文件,可以限制同一IP的登錄個數,是否允許用戶更改密碼(這需要客戶端軟體的支持),最大上傳下載的速
度,超時時間以及空閑時間,你也可以限制最大用戶數量,如20,說明同時只能有20個用戶登錄。
C、「目錄訪問」欄,如圖
在此你可以控制用戶對於文件目錄的許可權,對文件有讀取、寫入、刪除、追加、執行等操作,對於文件夾有列表、創建、刪除,以及是否繼承子目錄;如果覺得目錄不夠,你也可以添加可訪問的目錄。
D、「IP訪問」欄,如圖
在這里你可以規定某個IP是否可以訪問你的FTP伺服器,你可以拒絕它的訪問,只要填上相應的IP地址,以後由這個IP的訪問通通被攔下。
E、「上傳/下載率」欄,如圖
在這里你可以設置上傳和下載之間的比值,控制好上傳和下載之間的數據流量關系。
F、「配額」欄,如圖
這里你可以為每個FTP用戶設置磁碟空間,點擊「計算當前」,可以知道當前目前下的所有空間大小,在「最大」一欄中填入你想要限制的容量。
最後有一點,改過設置後一定要點擊右鍵,選擇「應用」使設置生效才行,否則一切都白做了!!
希望大家學會後,能為更多的人提供下載,享受寬頻帶來的快樂!
==========================================================================================================
SERV-U FTP的歡迎詞設置
讓你的SERV-U FTP看起來更專業一點
現在很多的朋友都用SERV-U做個人FTP的伺服器,有關如何使用SERV-U架設伺服器的文章很多了,這兒我就不多說了。不過大家不知道注意到了沒有,當你登陸很多FTP的時候,會顯示一些歡迎信息,比如說顯示你的IP,告訴你目前有多少人在使用FTP,帶寬是多少等等。。。看起來就比較的專業樣子。其實你自己也是可以做的,SERV-U這個軟體本身就有這個功能。下面我就說明以下如何在自己的FTP裡面加上這些信息。
第一、先建立一個文本文件,隨便取一個名字。我們這兒就取message.txt吧。
第二、這個這個文本文件裡面加上這些文字
-----------------------------------
歡迎來到XXX的個人FTP伺服器
你的IP地址是:%IP
目前伺服器所在的時間是 %time
已經有 %u24h 個用戶在最近24小時訪問過本FTP
本FTP伺服器已經運行了 %ServerDays 天,%ServerHours 小時 和 %ServerMins 分。
伺服器的運行情況:
所有登陸用戶數量: %loggedInAll total
當前登陸用戶數量: %Unow
已經下載位元組數: %ServerKbDown Kb
已經上傳位元組數: %ServerKbUp Kb
已經下載文件數: %ServerFilesDown
已經上傳文件數: %ServerFilesUp
伺服器平均帶寬: %ServerAvg Kb/sec
伺服器當前帶寬: %ServerKBps Kb/sec
------------------------------------
其中XXX可以改成你的名字
你也可以加上一些你自己認為喜歡的文字,不過要注意的是每行最好不要超過80個字元
其中以%開頭的都是一些變數,下面是SERV-U能支持的變數
時間和日期
%Time - 顯示你的計算機當前時間
%Date - 顯示你的計算機當前日期
伺服器的統計信息
%ServerDays - 顯示伺服器已經運行的天數
%ServerHours - 顯示伺服器已經運行的小時數
%ServerMins - 顯示伺服器已經運行的分鍾數
%ServerSecs - 顯示伺服器已經運行的秒數
%ServerKbUp - 顯示自從伺服器運行以來已經上傳的位元組數
%ServerKbDown - 顯示自從伺服器運行以來已經下載的位元組數
%ServerFilesUp - 顯示自從伺服器運行以來已經上傳的文件數
%ServerFilesDown - 顯示自從伺服器運行以來已經下載的文件數
%LoggedInAll - 顯示自從伺服器運行以來已經登陸的用戶數
%ServerAvg - 顯示伺服器的平均帶寬
%ServerKBps - 顯示伺服器的當前帶寬
伺服器的設定信息
%MaxUsers - 顯示伺服器能同時登陸的最大用戶數量
%MaxAnonymous - 顯示伺服器能同時登陸的最大匿名用戶數量
用戶信息
%Name - 顯示登陸的用戶名
%IP - 顯示登陸的用戶IP地址
%Dir - 顯示登陸的用戶的當前目錄
%Disk - 顯示登陸的用戶的當前磁碟
%DFree - 顯示登陸的用戶的當前磁碟空間,單位是MB
%FUp - 顯示登陸的用戶上傳的文件數量
%FDown - 顯示登陸的用戶下載的文件數量
%FTot - 顯示登陸的用戶上傳和下載的總的文件數量
%BUp - 顯示登陸的用戶上傳的位元組數,單位是KB
%Bdown - 顯示登陸的用戶下載的位元組數,單位是KB
%BTot - 顯示登陸的用戶上傳和下載的總位元組數,單位是KB
%TconM - 顯示登陸用戶連接時間,單位是分鍾
%TconS - 顯示登陸用戶連接時間,單位是秒,要和%TconM一起使用
%RatioUp - 顯示登陸用戶的上傳流量限制
%RatioDown - 顯示登陸用戶的下載流量限制
%RatioCredit - 顯示登陸用戶還有多少credit可以上傳和下載,這個是針對有些FTP是要上傳多少文件,才能下載多少文件而設置的
%QuotaUsed - 顯示登陸用戶的已經使用了多少空間,單位是KB
%QuotaLeft - 顯示登陸用戶的還有多少空間可以使用,單位是KB
%QuotaMax - 顯示登陸用戶的的最大空間,單位是KB
後面3個是針對有磁碟限制的用戶設置的
用戶數量
%UNow - 顯示當前有多少用戶連接
%UAll - 顯示從伺服器運行以來一共有多少用戶連接過
%U24h - 顯示最近24小時有多少用戶
%UAnonAll - 顯示當前總的匿名用戶數量
%UAnonThisIP - 顯示所有匿名登陸的用戶數
%UNonAnonAll - 顯示所有當前非匿名登陸用戶數
%UNonAnonThisIP - 顯示所有非匿名登陸用戶數
%UThisName - 顯示所有使用這個名字登陸的用戶數
自己在先建立一個.txt文件,輸入你想要顯示的文字,具體參數看上面的內容,然後在Serv_u內的server設置裡面,加入這個.txt文件就可以了
==========================================================================================================
——常見FTP登陸Log信息——
常見FTP登陸Log信息
1.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER anonymous
530 Sorry, no ANONYMOUS access allowed.
QUIT
這個就是不許匿名登錄啦
2.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER test
331 User name okay, need password.
PASS xxxxxx
530 Not logged in.
QUIT
一般是密碼輸入錯誤時出現的信息,但對於Serv-U來說,如果沒有這個帳號(test)存在,也會產生同樣的出錯信息。
3.
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
ERROR: Connection timed out
這個表明對方未開機,也可能是對方不在你能訪問的范圍內
4.
Connecting to xxx.xxx.xxx.xxx Port 21 (#1)
ERROR: Connection refused
這個一般表明對方已開機,但未開啟FTP服務(沒有開Serv-U)
也可能為對方不提供在這個埠上的服務
5.
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
Connected. Waiting for response.
Disconnected from server.
Connection attempt failed. Waiting for retry...
出現這個信息實在是很倒霉,你極有可能被對方Ban了。
如果只是Ban幾分鍾or幾小時or一天還好,不然只有和站長說說好話,讓他給你解封吧。
6.
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
Connected. Waiting for response.
USER XXX
331 User name okay, need password
PASS xxxxxx
530 Not logged in, unauthorized IP address.
QUIT
這個有點麻煩,你的IP不在站長允許訪問的IP范圍內,只有和站長聯系,讓他把你的IP網段加入Allow Access列表裡吧
7.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER user
421 Too many users - please try again later.
哈哈,這個很常見吧,用戶太多
8.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER test
530 Not logged in, only one session from same IP allowed at a time.
QUIT
每個IP只能開一個下載,就不要用多線程啦,小心Ban了你。
----------------------------------------------------------------------------------------------
內網、區域網如何設置IP,建立FTP
首先,我們知道動態IP機器出去的最大問題是IP,因為動態IP機器的IP外網是無法識別的,我們討論的是最普通的區域網內工作站出去做FTP和WEB站點的問題!
動態域名解析正好能夠解決此類問題,它的原理是將本機的動態IP自動映射到預先申請好的虛擬域名上,這樣外面就可以通過訪問固定的虛擬域名來訪問到動態IP機器了。
<花生殼>該軟體使用方便,幾乎不用動什麼腦筋,唯一要做的事情就是去注冊,然後申請一個以vicp.net為後綴虛擬域名。
1.進入http://www.oray.net/,下載<花生殼>,並「注冊網域護照」!
2.注冊完成後,登陸「我的控制台」
3.進入「我的控制台」,點擊左下角的『我要.激活花生殼服務』
4.點擊「開始」進入
在『免費域名』填入不重復的你想要得名字就是你將來的域名,例如:AGHU
5.以後就是「服務條款」和「填寫站點信息」,這些地球人都知道怎麼填!
填完結束,恭喜你,你的域名已經有了!例如:你以後的域名就是AGHU.VICP.NET
申請完免費域名以後,就安裝你已經下載的<花生殼>,然後打開運行
輸入你的注冊名和密碼,等一下就會激活你的域名,興奮吧!
然後你的ftp和web就可以啟動咯!
架設ftp伺服器的事情,另外有帖子詳細介紹了!!
======================================
區域網內公開的ip只有一個,除非你是在主機上建私服,否則你無法公開你的私服,只能在區域網內,解決的辦法如下。
由於公網ip地址有限,不少isp都採用多個內網用戶通過代理和網關路由共用一個公網ip上internet的方法,這樣就限制了這些用戶在自己計算機上架設個人網站。要實現對我們來說是比較困難的,首先得得到系統管理員的支持才能夠實現。因為這一切的設置必須在代理伺服器上做的。要實現這一點,可以用windows 2000 服務者 的埠映射功能,除此之外winroute pro也具有這樣的功能,還有各種企業級的防火牆。而對於我們這些普通用戶,恐怕還是用windows 2000 的轉換以解決ip地址匱乏問題。在防火牆上實現nat後,可以隱藏受保護網路的內部拓撲結構,在一定程度上提高網路的安全性。如果反向nat提供動態網路地址及埠轉換功能,還可以實現負載均衡等功能埠映射功能可以讓內部網路中某台機器對外部提供www服務。 埠映射功能還可以完成一些特定代理功能,比如代理pop,smtp,telnet等協議。理論上可以提供六萬多個埠的映射,恐怕我們永遠都用不完的。
一、下面來介紹一下通過nat共享上網和利用nat來實現埠映射。
1、在windows 2000 server上,從管理工具中進入「路由和遠程訪問」(routing 並且 遙遠 access)服務,在伺服器上滑鼠右擊,-》「配置並啟用路由和遠程訪問」
2、點「下一步」
3、選「internet連接伺服器」,讓內網主機可以通過這台伺服器訪問internet.(最好先配置好nat共享,讓內網主機可以正常上網,不然的話,配好埠映射後再來配置nat共享就有點麻煩了,弄的不好nat還共享不了。)
4、選「設置有網路地址轉換(nat)路由協議的路由器」,不要選「設置internet連接共享(ics)」.(ics與nat的區別在於使用的容易程度上,為了啟用ics,只需要選擇一個復選框就可以了,而為了啟用nat,則需要更多的配置任務,此外,ics用於小型網路上的原因還在於:針對內部主機,它需要有一個固定的ip地址范圍;針對與外部網路的通信,它被限制在單個公共ip地址上;它只允許單個內部網路介面。)
5、先在此說一下我的網路情況:internet連接192.200.
『肆』 用python寫測試腳本,從本地傳文件至ftp遠程路徑
轉自:http://news.tuxi.com.cn/kf/article/jhtdj.htm
本文實例講述了python實現支持目錄FTP上傳下載文件的方法。分享給大家供大家參考。具體如下:
該程序支持ftp上傳下載文件和目錄、適用於windows和linux平台。
#!/usr/bin/envpython
#-*-coding:utf-8-*-
importftplib
importos
importsys
classFTPSync(object):
conn=ftplib.FTP()
def__init__(self,host,port=21):
self.conn.connect(host,port)
deflogin(self,username,password):
self.conn.login(username,password)
self.conn.set_pasv(False)
printself.conn.welcome
deftest(self,ftp_path):
printftp_path
printself._is_ftp_dir(ftp_path)
#printself.conn.nlst(ftp_path)
#self.conn.retrlines('LIST./a/b')
#ftp_parent_path=os.path.dirname(ftp_path)
#ftp_dir_name=os.path.basename(ftp_path)
#printftp_parent_path
#printftp_dir_name
def_is_ftp_file(self,ftp_path):
try:
ifftp_pathinself.conn.nlst(os.path.dirname(ftp_path)):
returnTrue
else:
returnFalse
exceptftplib.error_perm,e:
returnFalse
def_ftp_list(self,line):
list=line.split('')
ifself.ftp_dir_name==list[-1]andlist[0].startswith('d'):
self._is_dir=True
def_is_ftp_dir(self,ftp_path):
ftp_path=ftp_path.rstrip('/')
ftp_parent_path=os.path.dirname(ftp_path)
self.ftp_dir_name=os.path.basename(ftp_path)
self._is_dir=False
ifftp_path=='.'orftp_path=='./'orftp_path=='':
self._is_dir=True
else:
#thisuescallbackfunction,thatwillchange_is_dirvalue
try:
self.conn.retrlines('LIST%s'%ftp_parent_path,self._ftp_list)
exceptftplib.error_perm,e:
returnself._is_dir
returnself._is_dir
defget_file(self,ftp_path,local_path='.'):
ftp_path=ftp_path.rstrip('/')
ifself._is_ftp_file(ftp_path):
file_name=os.path.basename(ftp_path)
#如果本地路徑是目錄,下載文件到該目錄
ifos.path.isdir(local_path):
file_handler=open(os.path.join(local_path,file_name),'wb')
self.conn.retrbinary("RETR%s"%(ftp_path),file_handler.write)
file_handler.close()
#如果本地路徑不是目錄,但上層目錄存在,則按照本地路徑的文件名作為下載的文件名稱
elifos.path.isdir(os.path.dirname(local_path)):
file_handler=open(local_path,'wb')
self.conn.retrbinary("RETR%s"%(ftp_path),file_handler.write)
file_handler.close()
#如果本地路徑不是目錄,且上層目錄不存在,則退出
else:
print'EROOR:Thedir:%sisnotexist'%os.path.dirname(local_path)
else:
print'EROOR:Theftpfile:%sisnotexist'%ftp_path
defput_file(self,local_path,ftp_path='.'):
ftp_path=ftp_path.rstrip('/')
ifos.path.isfile(local_path):
file_handler=open(local_path,"r")
local_file_name=os.path.basename(local_path)
#如果遠程路徑是個目錄,則上傳文件到這個目錄,文件名不變
ifself._is_ftp_dir(ftp_path):
self.conn.storbinary('STOR%s'%os.path.join(ftp_path,local_file_name),file_handler)
#如果遠程路徑的上層是個目錄,則上傳文件,文件名按照給定命名
elifself._is_ftp_dir(os.path.dirname(ftp_path)):
print'STOR%s'%ftp_path
self.conn.storbinary('STOR%s'%ftp_path,file_handler)
#如果遠程路徑不是目錄,且上一層的目錄也不存在,則提示給定遠程路徑錯誤
else:
print'EROOR:Theftppath:%siserror'%ftp_path
file_handler.close()
else:
print'ERROR:Thefile:%sisnotexist'%local_path
defget_dir(self,ftp_path,local_path='.',begin=True):
ftp_path=ftp_path.rstrip('/')
#當ftp目錄存在時下載
ifself._is_ftp_dir(ftp_path):
#如果下載到本地當前目錄下,並創建目錄
#下載初始化:如果給定的本地路徑不存在需要創建,同時將ftp的目錄存放在給定的本地目錄下。
#ftp目錄下文件存放的路徑為local_path=local_path+os.path.basename(ftp_path)
#例如:將ftp文件夾a下載到本地的a/b目錄下,則ftp的a目錄下的文件將下載到本地的a/b/a目錄下
ifbegin:
ifnotos.path.isdir(local_path):
os.makedirs(local_path)
local_path=os.path.join(local_path,os.path.basename(ftp_path))
#如果本地目錄不存在,則創建目錄
ifnotos.path.isdir(local_path):
os.makedirs(local_path)
#進入ftp目錄,開始遞歸查詢
self.conn.cwd(ftp_path)
ftp_files=self.conn.nlst()
forfileinftp_files:
local_file=os.path.join(local_path,file)
#如果fileftp路徑是目錄則遞歸上傳目錄(不需要再進行初始化begin的標志修改為False)
#如果fileftp路徑是文件則直接上傳文件
ifself._is_ftp_dir(file):
self.get_dir(file,local_file,False)
else:
self.get_file(file,local_file)
#如果當前ftp目錄文件已經遍歷完畢返回上一層目錄
self.conn.cwd("..")
return
else:
print'ERROR:Thedir:%sisnotexist'%ftp_path
return
defput_dir(self,local_path,ftp_path='.',begin=True):
ftp_path=ftp_path.rstrip('/')
#當本地目錄存在時上傳
ifos.path.isdir(local_path):
#上傳初始化:如果給定的ftp路徑不存在需要創建,同時將本地的目錄存放在給定的ftp目錄下。
#本地目錄下文件存放的路徑為ftp_path=ftp_path+os.path.basename(local_path)
#例如:將本地文件夾a上傳到ftp的a/b目錄下,則本地a目錄下的文件將上傳的ftp的a/b/a目錄下
ifbegin:
ifnotself._is_ftp_dir(ftp_path):
self.conn.mkd(ftp_path)
ftp_path=os.path.join(ftp_path,os.path.basename(local_path))
#如果ftp路徑不是目錄,則創建目錄
ifnotself._is_ftp_dir(ftp_path):
self.conn.mkd(ftp_path)
#進入本地目錄,開始遞歸查詢
os.chdir(local_path)
local_files=os.listdir('.')
forfileinlocal_files:
#如果file本地路徑是目錄則遞歸上傳目錄(不需要再進行初始化begin的標志修改為False)
#如果file本地路徑是文件則直接上傳文件
ifos.path.isdir(file):
ftp_path=os.path.join(ftp_path,file)
self.put_dir(file,ftp_path,False)
else:
self.put_file(file,ftp_path)
#如果當前本地目錄文件已經遍歷完畢返回上一層目錄
os.chdir("..")
else:
print'ERROR:Thedir:%sisnotexist'%local_path
return
if__name__=='__main__':
ftp=FTPSync('192.168.1.110')
ftp.login('test','test')
#上傳文件,不重命名
#ftp.put_file('111.txt','a/b')
#上傳文件,重命名
#ftp.put_file('111.txt','a/112.txt')
#下載文件,不重命名
#ftp.get_file('/a/111.txt',r'D:\')
#下載文件,重命名
#ftp.get_file('/a/111.txt',r'D:112.txt')
#下載到已經存在的文件夾
#ftp.get_dir('a/b/c',r'D:\a')
#下載到不存在的文件夾
#ftp.get_dir('a/b/c',r'D:\aa')
#上傳到已經存在的文件夾
ftp.put_dir('b','a')
#上傳到不存在的文件夾
ftp.put_dir('b','aa/B/')
希望本文所述對大家的Python程序設計有所幫助。
以下轉自:http://blog.csdn.net/linda1000/article/details/8255771
Python中的ftplib模塊
Python中默認安裝的ftplib模塊定義了FTP類,其中函數有限,可用來實現簡單的ftp客戶端,用於上傳或下載文件
FTP的工作流程及基本操作可參考協議RFC959
ftp登陸連接
from ftplib import FTP #載入ftp模塊
ftp=FTP() #設置變數
ftp.set_debuglevel(2) #打開調試級別2,顯示詳細信息
ftp.connect("IP","port") #連接的ftp sever和埠
ftp.login("user","password")#連接的用戶名,密碼
print ftp.getwelcome() #列印出歡迎信息
ftp.cmd("xxx/xxx") #更改遠程目錄
bufsize=1024 #設置的緩沖區大小
filename="filename.txt" #需要下載的文件
file_handle=open(filename,"wb").write #以寫模式在本地打開文件
ftp.retrbinaly("RETR filename.txt",file_handle,bufsize) #接收伺服器上文件並寫入本地文件
ftp.set_debuglevel(0) #關閉調試模式
ftp.quit #退出ftp
ftp相關命令操作
ftp.cwd(pathname) #設置FTP當前操作的路徑
ftp.dir() #顯示目錄下文件信息
ftp.nlst() #獲取目錄下的文件
ftp.mkd(pathname) #新建遠程目錄
ftp.pwd() #返回當前所在位置
ftp.rmd(dirname) #刪除遠程目錄
ftp.delete(filename) #刪除遠程文件
ftp.rename(fromname, toname)#將fromname修改名稱為toname。
ftp.storbinaly("STOR filename.txt",file_handel,bufsize) #上傳目標文件
ftp.retrbinary("RETR filename.txt",file_handel,bufsize)#下載FTP文件
網上找到一個具體的例子:
#例:FTP編程
fromftplibimportFTP
ftp=FTP()
timeout=30
port=21
ftp.connect('192.168.1.188',port,timeout)#連接FTP伺服器
ftp.login('UserName','888888')#登錄
printftp.getwelcome()#獲得歡迎信息
ftp.cwd('file/test')#設置FTP路徑
list=ftp.nlst()#獲得目錄列表
fornameinlist:
print(name)#列印文件名字
path='d:/data/'+name#文件保存路徑
f=open(path,'wb')#打開要保存文件
filename='RETR'+name#保存FTP文件
ftp.retrbinary(filename,f.write)#保存FTP上的文件
ftp.delete(name)#刪除FTP文件
ftp.storbinary('STOR'+filename,open(path,'rb'))#上傳FTP文件
ftp.quit()#退出FTP伺服器
完整的模板:
#!/usr/bin/python
#-*-coding:utf-8-*-
importftplib
importos
importsocket
HOST='ftp.mozilla.org'
DIRN='pub/mozilla.org/webtools'
FILE='bugzilla-3.6.7.tar.gz'
defmain():
try:
f=ftplib.FTP(HOST)
except(socket.error,socket.gaierror):
print'ERROR:cannotreach"%s"'%HOST
return
print'***Connectedtohost"%s"'%HOST
try:
f.login()
exceptftplib.error_perm:
print'ERROR:cannotloginanonymously'
f.quit()
return
print'***Loggedinas"anonymously"'
try:
f.cwd(DIRN)
exceptftplib.error_perm:
print'ERRORLcannotCDto"%s"'%DIRN
f.quit()
return
print'***Changedto"%s"folder'%DIRN
try:
#傳一個回調函數給retrbinary()它在每接收一個二進制數據時都會被調用
f.retrbinary('RETR%s'%FILE,open(FILE,'wb').write)
exceptftplib.error_perm:
print'ERROR:cannotreadfile"%s"'%FILE
os.unlink(FILE)
else:
print'***Downloaded"%s"toCWD'%FILE
f.quit()
return
if__name__=='__main__':
main()
『伍』 FTP怎麼設置
以設置FTP文件共享為例,具體操作步驟如下:
1、首先,打開控制面板並找到「程序-打開或關閉windows功能」選項,如下圖所示。
『陸』 跪求在visual studio2005下用腳本任務vb.net實現上傳文件至FTP功能(應用變數)
ConstSYNCHRONIZE=&H100000
ConstINFINITE=&HFFFFFFFF
"kernel32"(ByValdwDesiredAccessAsLong,ByValbInheritHandleAsLong,ByValdwProcessIdAsLong)AsLong
"kernel32"(ByValhObjectAsLong)AsLong
"kernel32"(ByValhHandleAsLong,ByValdwMillisecondsAsLong)AsLong
Private吵渣SubCommand1_Click()
DimfilenameAsString
DimftpAsString
DimunameAsString
DimupinAsString
ftp=InputBox("請輸入伺服器地址")
uname=InputBox("請拍御輸入帳號",,"anonymous")
upin=InputBox("請輸入密碼",,"IE@User")
filename=Timer()
Openfilename&".script"ForOutputAs#1
Print#1,"user"
Print#1,uname
Print#1,upin
Print#1,"pwd"
Print#1,"hash"
Print#1,"put"&filename&".txt"
Print#1,"quit"
Close#1
Openfilename&".txt"ForOutputAs#1
Print#1,Text1.Text
Print#1,Combo1.Text
Close#1
DoEvents
DimpIdAsLong,pHndAsLong
pId=Shell("ftp-n-s:"&filename&".script"&""&ftp,vbHide)
pHnd=OpenProcess(SYNCHRONIZE,0,pId)
IfpHnd<>0Then
CallWaitForSingleObject(pHnd,INFINITE)
CallCloseHandle(pHnd)
EndIf
Killfilename&".script"
EndSub
如果你覺得可以,把100分給我吧
我的方法很另類,給你說說過程
為了不重復文件名,我取時間為文件名filename
生成filename.script腳本,傳輸FTP用
生成filename.txt保存了combo1和text1的文字
調用ftp命令傳輸,不需要inet或winsock控制項
API是SHELL WAIT功升賀悄能,因為script腳本保存了帳號和密碼,當傳輸完成後刪除filename.script腳本
覺得如何,如果用inet不如這個簡單,畢竟FTP不是自己寫的,不管PASV與否都正常使用,唯一就是密碼保存要等傳輸完成
你想的第一個方案是不可能的,FTP是文本傳輸協議,與HTTP不一樣,不能寫POST,實在想那樣,VB做不了,需要手動創建數據包欺騙伺服器
『柒』 怎樣在FTP命令中使用windows環境變數
但變數值在FTP內部命令中無法替換 " 此句不解。
或許你可以詳細說明你要做的事件流程和想要達到的目的,以便於菜鳥們集思廣益。
『捌』 FTP 怎麼設置和使用
FTP說簡單一點就是可以進行網路文件共享,可以將你電腦上的資料(一般指的是較大的文件)通過FTP的方式進行公開,也就是將你的電腦設為簡單的伺服器,並且你自己可以設置訪問用戶名和密碼,只要你的電腦是開機的,不管在哪個地方的人都可以通過網路來訪問並下載你共享的文件,前提是要知道你的用戶名和密碼以及訪問的FTP地址
說得很簡單了,不知明白沒有,上面只是關於FTP的理解,要實際使用,則可以通過專業軟體完成,如何你安裝完軟體,應該你不知道的也就知道了,如FTP的地址是什麼,FTP的用戶和密碼怎麼設置,需要共享的文件怎麼選擇等等...
實際方法,說一下簡單的方法吧,自己做過的
1、下載一個Serv-UFTPServerV8的專業FTP軟體,下載地址搜一下,一大堆
2、查一下它的使用說明,網路也很多,沒有的話,直接安裝軟體,中文版的,裡面都有使用說明,你仔細研究一下也就了解了
PS:總的來說,感覺要學習的東西較多,實際上你只要安裝軟體,問題就都可以解決了,這個軟體我自己也用過,很好用,發一張操作界面讓你KK吧,打了好多字噢,希望對你有所幫助,再說一下FTP上傳和下載都不要錢!
『玖』 如何在ftp命令中使用shell變數
就是感嘆號! 進入ftp後ftp> help !! Escape to the shell 實際上,感嘆號!會新建一個shell,要再回到ftp,敲exit命令退出這個新建的shell即可。
『拾』 如何設置文件傳輸(FTP)伺服器
FreeBSD 系統中包含了 FTP 服務軟體, ftpd。這使得在 FreeBSD 上建立和管理 FTP 伺服器變得非常簡單。配置
最重要的配置步驟是決定允許哪些帳號訪問 FTP 伺服器。 一般的 FreeBSD 系統包含了一系列系統帳號分別用於執行不同的服務程序,但未知的用戶不應被允許登錄並使用這些帳號。 /etc/ftpusers 文件中, 列出了不允許通過 FTP 訪問的用戶。 默認情況下, 這包含了前述的系統帳號,但也可以在這里加入其它不應通過 FTP 訪問的用戶。 您可能會希望限制通過 FTP 登錄的某些用戶, 而不是完全阻止他們使用 FTP。 這可以通過 /etc/ftpchroot 文件來完成。 這一文件列出了希望對 FTP 訪問進行限制的用戶和組的表。 而在 ftpchroot 聯機手冊中, 已經對此進行了詳盡的介紹, 故而不再贅述。 如果您想要在伺服器上啟用匿名的 FTP 訪問, 則必須建立一個名為 ftp 的 FreeBSD 用戶。 這樣, 用戶就可以使用 ftp 或 anonymous 和任意的口令 (習慣上,應該是以那個用戶的郵件地址作為口令) 來登錄和訪問您的 FTP 伺服器。 FTP 伺服器將在匿名用戶登錄時調用 chroot,以便將其訪問限制在 ftp 用戶的主目錄中。 有兩個文本文件可以用來指定顯示在 FTP 客戶程序中的歡迎文字。 /etc/ftpwelcome 文件中的內容將在用戶連接上之後,在登錄提示之前顯示。 在成功的登錄之後, 將顯示 /etc/ftpmotd 文件中的內容。 請注意後者是相對於登錄環境的, 因此對於匿名用戶而言, 將顯示 ~ftp/etc/ftpmotd。 一旦正確地配置了 FTP 伺服器, 就必須在 /etc/inetd.conf 中啟用它。 這里需要做的全部工作就是將注釋符 「#」 從已有的 ftpd 行之前去掉:ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l
在設置了上述變數之後,獨立的服務將在下次系統重啟的時候啟動, 或者通過以 root 身份手動執行如下的命令啟動:# /etc/rc.d/ftpd start
現在可以通過輸入下面的命令來登錄您的 FTP 伺服器了:% ftp localhost維護
ftpd 服務程序使用 syslog 來記錄消息。默認情況下, 系統日誌將把和 FTP 相關的消息記錄到 /var/log/xferlog 文件中。 FTP 日誌的位置, 可以通過修改 /etc/syslog.conf 中如下所示的行來修改:ftp.info /var/log/xferlog
一定要小心對待在匿名 FTP 伺服器中可能遇到的潛在問題。 一般而言,允許匿名用戶上傳文件應三思。 您可能發現自己的 FTP 站點成為了交易未經授權的商業軟體的論壇, 或發生更糟糕的情況。 如果不需要匿名的 FTP 上傳,可以在文件上配置許可權, 使得您能夠在其它匿名用戶能夠下載這些文件之前復查它們。 本文由廣州北大青鳥天河培訓中心整理發布。