def full(self): if self.script: self.log.info('opening script in new window...') launch('osascript', '-e', SCRIPT_LAUNCH.format(command=self.prime)) return True code, _, err = launch('open', '-a', self.prime) if code == 0: return True self.log.error('could not start: {}', ' '.join(err)) return False
def null(self): flag = '-if' if self.script else '-ix' code, _, _ = launch('pgrep', flag, self.prime) if code != 0: self.log.debug('{} is not running', self.prime) return True code, _, _ = launch('pkill', flag, self.prime) if code == 0: return True self.log.error('{} could not be killed', self.prime) return False
def do_fire(self, lift=True): for _, (_, out, err) in launch_repeat( 'osascript', '-e', SCRIPT_ACTION.format( device=self.prime, desired=('Connect' if lift else 'Disconnect'), already=('Disconnect' if lift else 'Connect'), ), times=2, patience=self.delay, ): launch('osascript', '-e', SCRIPT_ESCAPE) if err: self.log.debug('bluetooth says: {}', ' '.join(err)) if ''.join(out) == 'success': return True return False
def _fetch_password(self): code, _, err = launch('security', 'find-generic-password', '-ga', self.prime, e_hide=True) if code == 0: _, _, passwd = err[-1].rpartition(': "') return passwd.rstrip('"') self.log.error('disk password failed: {}', ' '.join(err)) return False
def _disk_unlock(self, uuid, passwd): code, _, err = launch('diskutil', 'corestorage', 'unlockvolume', uuid, '-stdinpassphrase', stdin=passwd) if code == 0: return True if err and 'already unlocked and is attached' in err[0]: self.log.info('disk {} was already unlocked', self.prime) return True self.log.error('disk unlock failed', ' '.join(err)) return False
def _disk_mount(self, node): code, _, err = launch('diskutil', 'mount', node) if code == 0: return True self.log.error('disk mount failed: {}', ' '.join(err)) return False
def _disk_info(self): code, out, _ = launch('diskutil', 'info', self.prime) if code != 0: self.log.warning('disk unknown: {}', ' '.join(out)) return dict((k.strip(), v.strip()) for k, v in [ln.split(':') for ln in out if ln])
def wrap(prime): code, _, err = launch(*command) if code == 0: return True LOG.error('command {} failed: {}', prime, ' '.join(err))