ftp_client.py 1.8 KB

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