#!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import print_function import os import subprocess import time from bluepy.btle import Scanner # Me __author__ = "Emilio / @ekio_jp" __version__ = "1.5" # config btlename = 'circo' def btle(): findkey = False scanner = Scanner() devices = scanner.scan(10.0) for dev in devices: for (adtype, desc, value) in dev.getScanData(): if findkey: if 'Complete 128b Services' in desc: subprocess.call('umount /home/pi-enc 2>/dev/null', shell=True) subprocess.call('cryptsetup close /dev/mapper/pi.enc 2>/dev/null', shell=True) subprocess.call('losetup -D', shell=True) subprocess.call('losetup /dev/loop0 /home/pi.enc 2>/dev/null', shell=True) subprocess.call('echo ' + value + ' | cryptsetup --batch-mode luksOpen /dev/loop0 pi.enc', shell=True) subprocess.call('mount /dev/mapper/pi.enc /home/pi-enc', shell=True) break if 'Complete Local Name' in desc: if btlename in value: findkey = True def main(): sleep = 5 while True: if os.path.ismount('/home/pi-enc'): sleep = 300 pass else: btle() time.sleep(sleep) if __name__ == '__main__': main()