# -*- coding:utf-8 -*-
import ftplib
import paramiko
from socket import *
class LibFTP:
def __init__(self, ftp_host, ftp_port, ftp_mode=''):
if ftp_mode == 'ssl':
self._ftp = LibFTPSSL(ftp_host, ftp_port)
else:
self._ftp = LibFTPNormal(ftp_host, ftp_port)
def login(self, ftp_user, ftp_pass):
self._ftp.login(ftp_user, ftp_pass)
def setUploadPath(self, set_upload_path):
self._ftp.setUploadPath(set_upload_path)
def upload(self, upload_file_path, upload_file_name):
self._ftp.upload(upload_file_path, upload_file_name)
def close(self):
self._ftp.close()
class LibFTPSSL:
def __init__(self, ftp_host, ftp_port):
try:
ftp_host = gethostbyname(ftp_host)
self._connect = paramiko.Transport((ftp_host,ftp_port))
except Exception, e:
raise SystemExit('SFTP connect error : '+ftp_host)
def login(self, ftp_user, ftp_pass):
try:
self._connect.connect(username=ftp_user,password=ftp_pass)
self._sftp = paramiko.SFTPClient.from_transport(self._connect)
except Exception, e:
raise SystemExit('SFTP login error')
def setUploadPath(self, set_upload_path):
self._sftp.chdir(set_upload_path)
def upload(self, upload_file_path, upload_file_name):
try:
wf = self._sftp.open(upload_file_name, 'wb')
rf = open(upload_file_path, 'rb')
data = rf.read(1024*1024)
while(data):
wf.write(data)
data = rf.read(1024*1024)
except Exception, e:
raise SystemExit('SFTP upload error')
def close(self):
self._connect.close()
class LibFTPNormal:
def __init__(self, ftp_host, ftp_port):
try:
self._connect = ftplib.FTP(ftp_host)
except Exception, e:
raise SystemExit('FTP connect error : '+ftp_host)
def login(self, ftp_user, ftp_pass):
try:
self._connect.login(ftp_user, ftp_pass)
except Exception, e:
raise SystemExit('FTP login error')
def setUploadPath(self, set_upload_path):
self._connect.cwd(set_upload_path)
def upload(self, upload_file_path, upload_file_name):
try:
self._connect.storbinary('STOR '+upload_file_name, open(upload_file_path, 'rb'))
except Exception, e:
raise SystemExit('FTP upload error')
def close(self):
self._connect.close()
0 개의 댓글:
댓글 쓰기