'Get the password from a Glances client or server.
For Glances server, get the password (confirm=True, clear=False):
1) from the password file (if it exists)
2) from the CLI
Optionally: save the password to a file (hashed with salt + SHA-256)
For Glances client, get the password (confirm=False, clear=True):
1) from the CLI
2) the password is hashed with SHA-256 (only SHA string transit
through the network)'

def get_password(self, description='', confirm=False, clear=False):

    if (os.path.exists(self.password_file) and (not clear)):
        logger.info('Read    password    from    file    {}'.format(self.password_file))
        password = self.load_password()
    else:
        password_sha256 = self.sha256_hash(getpass.getpass(description))
        password_hashed = self.hash_password(password_sha256)
        if confirm:
            password_confirm = self.sha256_hash(getpass.getpass('Password    (confirm):    '))
            if (not self.check_password(password_hashed, password_confirm)):
                logger.critical('Sorry,    passwords    do    not    match.    Exit.')
                sys.exit(1)
        if clear:
            password = password_sha256
        else:
            password = password_hashed
        if (not clear):
            save_input = input('Do    you    want    to    save    the    password?    [Yes/No]:    ')
            if ((len(save_input) > 0) and (save_input[0].upper() == 'Y')):
                self.save_password(password_hashed)
    return password
