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()
You can get UUID of drive by using get_uuid() method, like this:
with FilesystemTable() as fstab:
for fs in fstab:
print "%s = %s" % (fs.source, fs.get_uuid())
Getting proper results from get_uuid() requires root access on some systems. If drive does not have UUID, or you don't have permissions to read it, get_uuid() will return empty string. UUID detection requires libblkid installed in your system.
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.