How to use pysftp - 10 common examples

To help you get started, we’ve selected a few pysftp examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github mlflow / mlflow / tests / store / artifact / test_sftp_artifact_repo.py View on Github external
def sftp_mock():
    return MagicMock(autospec=pysftp.Connection)
github jrderuiter / airflow-fs / tests / airflow_fs / hooks / test_sftp_hook.py View on Github external
def test_mkdir(self, sftp_conn, sftp_client, tmpdir):
        """Tests the `mkdir` method with mode parameter."""

        dir_path = posixpath.join(str(tmpdir), "subdir")
        assert not sftp_client.exists(dir_path)

        with SftpHook("sftp_default") as hook:
            hook.mkdir(dir_path, mode=0o750)

        assert sftp_client.exists(dir_path)
        assert pysftp.st_mode_to_int(sftp_client.stat(dir_path).st_mode) == 750
github jrderuiter / airflow-fs / tests / airflow_fs / hooks / test_sftp_hook.py View on Github external
def test_makedirs(self, sftp_conn, sftp_client, tmpdir):
        """Tests the `mkdir` method with mode parameter."""

        dir_path = posixpath.join(str(tmpdir), "some", "nested", "dir")

        with SftpHook("sftp_default") as hook:
            hook.makedirs(dir_path, mode=0o750)

        assert sftp_client.exists(dir_path)
        assert pysftp.st_mode_to_int(sftp_client.stat(dir_path).st_mode) == 750
github google / starthinker / starthinker / util / data / __init__.py View on Github external
bucket_create(auth, project.id, destination['storage']['bucket'])

    # put the file
    file_out = destination['storage']['bucket'] + ':' + destination['storage']['path'] + variant
    if project.verbose: print('SAVING', file_out)
    object_put(auth, file_out, rows_to_csv(rows))

  if 'sftp' in destination:
    try:
      cnopts = pysftp.CnOpts()
      cnopts.hostkeys = None

      path_out, file_out = destination['sftp']['file'].rsplit('.', 1)
      file_out = path_out + variant + file_out

      sftp = pysftp.Connection(host=destination['sftp']['host'], username=destination['sftp']['username'], password=destination['sftp']['password'], port=destination['sftp']['port'], cnopts=cnopts)

      if '/' in file_out:
        dir_out, file_out = file_out.rsplit('/', 1)
        sftp.cwd(dir_out)

      sftp.putfo(rows_to_csv(rows), file_out)

    except e:
      print(str(e))
      traceback.print_exc()
github Catboy96 / Gekko / gekko / gekko.py View on Github external
with open(ignfile, 'r', encoding='UTF-8') as fr:
            lines = fr.read().split('\n')
            while '' in lines:
                lines.remove('')
    except FileNotFoundError:
        lines = []

    # Establish SFTP connection
    try:
        cnopts = pysftp.CnOpts()
        cnopts.hostkeys = None
        print("Connecting to %s:%s... " % (host, port), end='')
        if key != '':
            sftp = pysftp.Connection(host, username=user, port=int(port), private_key=key, cnopts=cnopts)
        else:
            sftp = pysftp.Connection(host, username=user, port=int(port), password=password, cnopts=cnopts)
        print("Connected.")
    except pysftp.exceptions.ConnectionException:
        print("\n\nAn error occurred when establishing connection.\nCheck for Internet connection.")
        exit(8)
    except paramiko.ssh_exception.AuthenticationException:
        print("\n\nAuthentication failed.")
        exit(7)

    # Check for uploading directory
    print("Checking for %s... " % path, end='')
    if sftp.exists(path):
        print("Exist.")
        print("Change directory to %s... Done." % path)
        sftp.cd(path)
    else:
        # Remote directory do not exist
github it-projects-llc / odoo-saas-tools / saas_server_backup_ftp / models / saas_server.py View on Github external
}
        if rsa_key_path:
            params["private_key"] = self.rsa_key_path
            if rsa_key_passphrase:
                params["private_key_pass"] = rsa_key_passphrase
        else:
            params["password"] = password

        cnopts = pysftp.CnOpts()
        if sftp_public_key:
            key = paramiko.RSAKey(data=base64.b64decode(sftp_public_key))
            cnopts.hostkeys.add(server, 'ssh-rsa', key)
        else:
            cnopts.hostkeys = None

        with pysftp.Connection(**params, cnopts=cnopts) as sftp:

            # set keepalive to prevent socket closed / connection dropped error
            sftp._transport.set_keepalive(30)
            try:
                sftp.chdir(path)
            except IOError:
                # Create directory and subdirs if they do not exist.
                currentDir = ''
                for dirElement in path.split('/'):
                    currentDir += dirElement + '/'
                    try:
                        sftp.chdir(currentDir)
                    except Exception as e:
                        print(('(Part of the) path doesn\'t exist. Creating it now at ' + currentDir))
                        # Make directory and then navigate into it
                        sftp.mkdir(currentDir, mode=777)
github it-projects-llc / odoo-saas-tools / saas_server_backup_ftp / models / saas_server.py View on Github external
rsa_key_path = ICPSudo.get_param('saas_server.rsa_key_path', None)
        rsa_key_passphrase=ICPSudo.get_param('saas_server.rsa_key_passphrase')
        sftp_public_key=ICPSudo.get_param('saas_server.sftp_public_key')

        params = {
            "host": server,
            "username": username,
        }
        if rsa_key_path:
            params["private_key"] = self.rsa_key_path
            if rsa_key_passphrase:
                params["private_key_pass"] = rsa_key_passphrase
        else:
            params["password"] = password

        cnopts = pysftp.CnOpts()
        if sftp_public_key:
            key = paramiko.RSAKey(data=base64.b64decode(sftp_public_key))
            cnopts.hostkeys.add(server, 'ssh-rsa', key)
        else:
            cnopts.hostkeys = None

        with pysftp.Connection(**params, cnopts=cnopts) as sftp:

            # set keepalive to prevent socket closed / connection dropped error
            sftp._transport.set_keepalive(30)
            try:
                sftp.chdir(path)
            except IOError:
                # Create directory and subdirs if they do not exist.
                currentDir = ''
                for dirElement in path.split('/'):
github google / starthinker / starthinker / util / data / __init__.py View on Github external
makedirs_safe(parse_path(file_out))
    with open(file_out, 'w') as save_file:
      save_file.write(rows_to_csv(rows).read())

  if 'storage' in destination and destination['storage'].get('bucket') and destination['storage'].get('path'):
    # create the bucket
    bucket_create(auth, project.id, destination['storage']['bucket'])

    # put the file
    file_out = destination['storage']['bucket'] + ':' + destination['storage']['path'] + variant
    if project.verbose: print('SAVING', file_out)
    object_put(auth, file_out, rows_to_csv(rows))

  if 'sftp' in destination:
    try:
      cnopts = pysftp.CnOpts()
      cnopts.hostkeys = None

      path_out, file_out = destination['sftp']['file'].rsplit('.', 1)
      file_out = path_out + variant + file_out

      sftp = pysftp.Connection(host=destination['sftp']['host'], username=destination['sftp']['username'], password=destination['sftp']['password'], port=destination['sftp']['port'], cnopts=cnopts)

      if '/' in file_out:
        dir_out, file_out = file_out.rsplit('/', 1)
        sftp.cwd(dir_out)

      sftp.putfo(rows_to_csv(rows), file_out)

    except e:
      print(str(e))
      traceback.print_exc()
github paypal / PPExtensions / ppextensions / pputils / utils / tableau.py View on Github external
site_name = input("Enter the site name to publish ")
            username = input("Enter tableau user name ")
            password = getpass.getpass("Please enter your password ")

        data_file_name = str(data_file).rsplit('.tde', 1)[0]

        subprocess.run(["tabcmd", "--accepteula"], stdout=subprocess.PIPE,
                       stderr=subprocess.PIPE)

        result = subprocess.run(["tabcmd", "login", "-s",
                                 "{}".format(site_name), "-u", "{}".format(username),
                                 "-p", "{}".format(password)], stdout=subprocess.PIPE,
                                stderr=subprocess.PIPE)

        if result.returncode != 0:
            raise ConnectionException("Unable to connect to tableau server")

        result = subprocess.run(["tabcmd", "publish",
                                 "{}".format(data_file),
                                 "-r", "{}".format(project_name)], stdout=subprocess.PIPE, stderr=subprocess.PIPE)

        if result.returncode != 0:
            if ("A data source named '{}' already exists in project".format(
                    data_file_name) in str(result.stderr)):
                result = subprocess.run(
                    ["tabcmd", "publish", "{}".format(data_file),
                     "-r", "{}".format(project_name), "--overwrite"], stdout=subprocess.PIPE,
                    stderr=subprocess.PIPE)
                overwrite = True
            if "Unexpected response from the server:" not in str(result.stderr):
                print(result.stderr)
                raise SSHException("Unable to get response from tableau server")
github Catboy96 / Gekko / gekko / gekko.py View on Github external
while '' in lines:
                lines.remove('')
    except FileNotFoundError:
        lines = []

    # Establish SFTP connection
    try:
        cnopts = pysftp.CnOpts()
        cnopts.hostkeys = None
        print("Connecting to %s:%s... " % (host, port), end='')
        if key != '':
            sftp = pysftp.Connection(host, username=user, port=int(port), private_key=key, cnopts=cnopts)
        else:
            sftp = pysftp.Connection(host, username=user, port=int(port), password=password, cnopts=cnopts)
        print("Connected.")
    except pysftp.exceptions.ConnectionException:
        print("\n\nAn error occurred when establishing connection.\nCheck for Internet connection.")
        exit(8)
    except paramiko.ssh_exception.AuthenticationException:
        print("\n\nAuthentication failed.")
        exit(7)

    # Check for uploading directory
    print("Checking for %s... " % path, end='')
    if sftp.exists(path):
        print("Exist.")
        print("Change directory to %s... Done." % path)
        sftp.cd(path)
    else:
        # Remote directory do not exist
        # Print every file not marked as 'ignored'
        total_size = 0