def __init__(self, filename='/etc/fstab'): self._filename = filename self._fstab = {} with open(filename) as lines: for line in lines: if not line.startswith('#') and line.strip(): if line.startswith('UUID'): fs_spec = line.split()[0].split('=')[1] device = drivereader.get_device_path(uuid=fs_spec) use_uuid = True elif line.startswith('LABEL'): label = line.split()[0].split('=')[1] device = drivereader.get_device_path(label=label) part = drivereader.get_partition(device) fs_spec = part.getUUID() use_uuid = True elif line.startswith('/dev/'): device = line.split()[0] try: part = drivereader.get_partition(device) fs_spec = part.getUUID() use_uuid = True except Exception: fs_spec = line.split()[0] use_uuid = False else: device = line.split()[0] fs_spec = line.split()[0] use_uuid = False fs_file = line.split()[1] fs_vfstype = line.split()[2] fs_mntops = line.split()[3] fs_freq = line.split()[4] fs_passno = line.split()[5] self._fstab[device] = {'fs_spec' : fs_spec, 'fs_file' : fs_file, 'fs_vfstype' : fs_vfstype, 'fs_mntops' : fs_mntops, 'fs_freq' : fs_freq, 'fs_passno' : fs_passno, 'use_uuid' : use_uuid}
def onPartCursorChanged(self, selection): model, treeiter = selection.get_selected() if treeiter is not None: device_path = model[treeiter][0] part = drivereader.get_partition(device_path) self.part_filesystem.set_text(part.getFilesystem()) self.part_size.set_text(part.getSize()) self.part_label.set_text(part.getLabel()) self.current_part = (model, treeiter)
def updateFstab(self, device, mountpoint, mountoptions, filesystem): try: part = drivereader.get_partition(device) except Exception: part = None if mountpoint == '': del self._fstab[device] if mountpoint != 'none' and not mountpoint.startswith('/'): raise Exception('Invalid mountpoint {}'.format(mountpoint)) if mountpoint != 'none' and mountpoint.startswith('/'): if not os.path.exists(mountpoint): os.mkdir(mountpoint) if device in self._fstab: self._fstab[device]['fs_file'] = mountpoint self._fstab[device]['fs_vfstype'] = filesystem if mountoptions != '': self._fstab[device]['fs_mntops'] = mountoptions else: self._fstab[device]['fs_mntops'] = 'defaults' else: if part: fs_spec = part.getUUID() use_uuid = True else: fs_spec = device use_uuid = False fs_file = mountpoint fs_vfstype = filesystem fs_mntops = 'defaults' fs_freq = '0' ### TODO ### if mountpoint == '/': fs_passno = '1' elif fs_vfstype in ['ext3', 'ext4']: fs_passno = '2' else: fs_passno = '0' self._fstab[device] = {'fs_spec' : fs_spec, 'fs_file' : fs_file, 'fs_vfstype' : fs_vfstype, 'fs_mntops' : fs_mntops, 'fs_freq' : fs_freq, 'fs_passno' : fs_passno, 'use_uuid' : use_uuid}