A library for reading and manipulating filesystem tables, such as /etc/fstab
.
It uses ctypes
to wrap libmount
, part of
util-linux.
Every reading and manipulation of the filesystem table should take place in a
with
block to take the lock:
from libmount import FilesystemTable with FilesystemTable() as fstab: print fstab[0].target
A FilesystemTable
acts like a list, so you can slice and iterate:
with FilesystemTable() as fstab: print [fs.source for fs in fstab] print fs[2:5]
FilesystemTable
objects contain Filesystem
objects, that each have
source
, target
, fstab
and options
attributes. The first three
are strings, whereas the latter is set
-like:
with FilesystemTable() as fstab: fs = fstab[0] # Will print e.g. "/dev/sda1 on / type ext4 (user_xattr)" print fs fs.source = '/dev/sda2' print "Options: %s" % ", ".join(fs.options) fs.options -= set(['user_xattr'])
To update the on-disk filesystem table, call save()
:
with FilesystemTable() as fstab: for fs in fstab: if fs.fstype in ('ext3', 'ext4'): fs.options.add('user_xattr') fstab.save()
It is not yet possible to add or remove entries. This has not been thoroughly tested when run by non-privileged users.
Feedback is gratefully received to infodev@oucs.ox.ac.uk, or as an issue in the issue tracker.