Pysftp
作为一个轻量级的直接远程操作目标机器的模块,直接上代码, 具体用法请参考相关文档(自己上网查 =。=)。
class SFTP(object):
def __init__(self):
self.port = 22
self.hostname = ''
self.user_name = ''
self.pwd = ''
self.file_path = ''
def parse_params(self, dic): self.hostname = dic.get('hostname') or '' assert self.hostname, "require set ssh hostname." self.user_name, self.new_hostname = self.hostname.split('@') # print(self.user, '@', self.hostname) # self.user_name = dic.get('user_name') or '' self.pwd = dic.get('password') or '' self.port = dic.get('port') or 22 self.file_path = dic.get('file_path') or '' assert self.file_path, "require set file_path." # assert self.user_name, "require set ssh user name." assert self.pwd, "require set ssh password." # self.new_storage_path = os.path.join(self.storage_path, gen_md5(self.hostname + '|' + self.pwd)) self.new_storage_path = os.path.join(self.storage_path, gen_md5(self.hostname + '|' + self.pwd + '|' + self.file_path + f"{str(time.time())}")) # set storage_path self.set_storage_path(self.new_storage_path) def connet(self): d_l = [] pool = Pool(5) task_lst = [] cnopts = pysftp.CnOpts(knownhosts=self.hostname) cnopts.hostkeys = None with pysftp.Connection(host=self.new_hostname, username=self.user_name, password=self.pwd, port=self.port, cnopts=cnopts) as sftp: print("Connection succesfully stablished ... ") # Switch to a remote directory # sftp.cwd('../') sftp.cwd(self.file_path) # Obtain structure of the remote directory '/' # directory_structure = sftp.listdir_attr() # print(directory_structure) # _dir = sftp.listdir('/renpeng') file_dir = sftp.listdir(self.file_path)
# ---- do something you wanna to do -----