Ejemplo n.º 1
0
Archivo: shup.py Proyecto: Naam/shup
def putFile(cfg, sftp: sftp_client, fpath):
    '''Upload the file pointed by the absolute path fpath to the remote host
    that the sftp client connect to'''
    if args.verbose:
        print('Uploading: {}...'.format(os.path.basename(fpath)))

    finalPath = getRemotePath(cfg, fpath)
    createPath(cfg.get('file_path'), sftp)
    sftp.put(fpath, finalPath)
    return finalPath
Ejemplo n.º 2
0
Archivo: shup.py Proyecto: Naam/shup
def setFileOwner(cfg, sftp: sftp_client, sshClient: SSHClient,
                 finalPath):
    stdin, stdout, stderr = execCmd(sshClient, "getent group {}".format(
        cfg.get('file_group')))
    gid = int(stdout.read().split(b':')[2])
    stdin, stdout, stderr = execCmd(sshClient, "id -u {}".format(
        cfg.get('file_user')))
    stdout = stdout.read()
    uid = int(stdout)
    if args.verbose:
        print('Set file owner to {}:{}'.format(uid, gid))
    sftp.chown(finalPath, uid, gid)
Ejemplo n.º 3
0
Archivo: shup.py Proyecto: Naam/shup
def set_file_owner(cfg: Config, sftp: sftp_client, ssh_client: SSHClient,
                   final_path: str) -> None:
    group = None
    user = None
    if cfg.exists('file_group'):
        group = cfg.get_str('file_group')
    else:
        group = cfg.get_str('ssh_user')
    if cfg.exists('file_user'):
        user = cfg.get_str('file_user')
    else:
        user = cfg.get_str('ssh_user')

    stdin, stdout, stderr = execCmd(ssh_client, "id -g {}".format(group))
    stdout = stdout.read()
    gid = int(stdout)
    stdin, stdout, stderr = execCmd(ssh_client, "id -u {}".format(user))
    stdout = stdout.read()
    uid = int(stdout)
    log('Set file owner to {}:{}'.format(uid, gid))
    sftp.chown(final_path, uid, gid)
Ejemplo n.º 4
0
Archivo: shup.py Proyecto: Naam/shup
def createPath(path, sftp: sftp_client):
    '''Create missing directories in path and change directory to that path'''
    if path == '/':
        sftp.chdir('/')
        return
    if path == '':
        return
    try:
        sftp.chdir(path)
    except IOError:
        dirname, basename = os.path.split(path.rstrip('/'))
        createPath(dirname, sftp)
        sftp.mkdir(basename)
        sftp.chdir(basename)
        return True
Ejemplo n.º 5
0
Archivo: shup.py Proyecto: Naam/shup
def create_path_then_cd(path: str, sftp: sftp_client):
    '''Create missing directories in provided path and change directory to
    that path'''
    if path == '/':
        sftp.chdir('/')
        return
    if path == '':
        return
    try:
        sftp.chdir(path)
    except IOError:
        dirname, basename = os.path.split(path.rstrip('/'))
        create_path_then_cd(dirname, sftp)
        sftp.mkdir(basename)
        sftp.chdir(basename)
        return True
Ejemplo n.º 6
0
Archivo: shup.py Proyecto: Naam/shup
def put_file(cfg: Config, sftp: sftp_client, fpath: str, verbose=False) -> str:
    '''Upload the file pointed by the absolute path fpath to the remote host
    that the sftp client connect to'''

    final_path = get_remote_path(cfg, fpath)
    create_path_then_cd(cfg.get_str('file_path'), sftp)

    log('Uploading: {}...'.format(os.path.basename(fpath)))
    if verbose:
        bar = [None]
        try:
            sftp.put(fpath,
                     final_path,
                     callback=lambda x, y: log_progress(x, y, bar))
            if bar[0]:
                bar[0].finish()
        except KeyboardInterrupt:
            logging.warning('Aborded, cleaning remote file')
            sftp.remove(final_path)
            raise KeyboardInterrupt
    else:
        sftp.put(fpath, final_path)

    return final_path
Ejemplo n.º 7
0
Archivo: shup.py Proyecto: Naam/shup
def set_file_mode(sftp: sftp_client, final_path: str, mode: str) -> None:
    log('Changing permissions to {}'.format(mode))

    fmode = int(mode, 8)
    sftp.chmod(final_path, fmode)
Ejemplo n.º 8
0
Archivo: shup.py Proyecto: Naam/shup
def setFileMode(sftp: sftp_client, finalPath, mode):
    if args.verbose:
        print('Changing permissions to {}'.format(mode))

    fmode = int(mode, 8)
    sftp.chmod(finalPath, fmode)