作为一个轻量级的直接远程操作目标机器的模块,直接上代码, 具体用法请参考相关文档(自己上网查 =。=)。
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 -----