使用python實現http及ftp服務進行資料傳輸
阿新 • • 發佈:2019-01-06
伺服器之間的http資料傳輸
直接使用python內建的http服務:
python -m SimpleHTTPServer 8000
此時,輸入指令的目錄就已經開啟了http服務,8000為埠(如不指定,預設為8000),如果我們需要在其他機器下垃取該目錄下的檔案,只需在目標機器執行:
wget ip:port/檔名
速度槓桿的。
開啟ftp上傳檔案
- 安裝ftp的python第三方元件
pip install pyftpdlib
- 編寫啟動指令碼
from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
import os
def main():
# Instantiate a dummy authorizer for managing 'virtual' users
authorizer = DummyAuthorizer()
# Define a new user having full r/w permissions and a read-only
# anonymous user
authorizer.add_user('user' , '12345', '.', perm='elradfmwM')
authorizer.add_anonymous(os.getcwd())
# Instantiate FTP handler class
handler = FTPHandler
handler.authorizer = authorizer
# Define a customized banner (string returned when client connects)
handler.banner = "pyftpdlib based ftpd ready."
# Specify a masquerade address and the range of ports to use for
# passive connections. Decomment in case you're behind a NAT.
#handler.masquerade_address = '151.25.42.11'
#handler.passive_ports = range(60000, 65535)
# Instantiate FTP server class and listen on 0.0.0.0:2121
address = ('', 8888)
server = FTPServer(address, handler)
# set a limit for connections
server.max_cons = 256
server.max_cons_per_ip = 5
# start ftp server
server.serve_forever()
if __name__ == '__main__':
main()
其中8888是我設定的埠號,user是使用者名稱,12345是我指定的密碼,此時,我們至需要執行指令碼,就可以使用ftp工具,連線該ftp伺服器,並上傳檔案了。
如果我們不使用我們自己編寫的指令碼,而是直接使用內建的指令碼:
python -m pyftpdlib -p 8888
此時,連線該ftp伺服器,使用的是預設的使用者:anonymous,但是當我們上傳檔案時,會發現,沒有該使用者的上傳許可權,所以,這裡建議自己編寫執行指令碼。