ftp_client.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import plac
  2. import pysftp
  3. from pathlib import Path
  4. from dataclasses import dataclass
  5. import warnings
  6. @dataclass
  7. class FtpConfig:
  8. server: str
  9. username: str
  10. password: str
  11. path: str
  12. class FtpClient:
  13. commands = ['upload', 'download_dir']
  14. def __init__(self):
  15. self.base_dir = Path(__file__).parent
  16. # cfg = json.load(open(self.base_dir.joinpath('ftp_config.json'), 'r'))
  17. # self.ftp_cfg = FtpConfig(**cfg)
  18. # self.ftp_cfg = FtpConfig("ftp.global-cube.com", "p33781016-vm", "Gcbs12ma-vm2020!!", "/")
  19. self.ftp_cfg = FtpConfig("ftp.global-cube.com", "u1339416173", "dihob#ratuy5kub%", "/")
  20. warnings.filterwarnings('ignore')
  21. @plac.pos('filename', '', type=str)
  22. def upload(self, filename='CARLO.csv'):
  23. cnopts = pysftp.CnOpts()
  24. cnopts.hostkeys = None
  25. with pysftp.Connection(self.ftp_cfg.server,
  26. username=self.ftp_cfg.username,
  27. password=self.ftp_cfg.password,
  28. cnopts=cnopts) as ftp_conn:
  29. ftp_conn.cwd(self.ftp_cfg.path)
  30. ftp_conn.put(filename)
  31. # print(res)
  32. @plac.pos('path_from', '', type=str)
  33. @plac.pos('path_to', '', type=str)
  34. def download_dir(self, path_from='/server2019', path_to='./'):
  35. cnopts = pysftp.CnOpts()
  36. cnopts.hostkeys = None
  37. with pysftp.Connection(self.ftp_cfg.server,
  38. username=self.ftp_cfg.username,
  39. password=self.ftp_cfg.password, cnopts=cnopts) as ftp_conn:
  40. ftp_conn.cwd(path_from)
  41. files_list = ftp_conn.listdir()
  42. print(files_list)
  43. ftp_conn.get_d(path_from, path_to)
  44. if __name__ == '__main__':
  45. # plac.Interpreter.call(ftp)
  46. FtpClient().download_dir()