libfuse/util/mount.fuse
Miklos Szeredi 874d95da5b fix
2003-12-11 14:27:57 +00:00

86 lines
2.1 KiB
Python

#!/usr/bin/env python
#@+leo-ver=4
#@+node:@file mount.fuse
#@@first #!/usr/bin/env python
"""
This utility allows FUSE filesystems to be mounted with the regular *nix
'mount' command, or even be listed in /etc/fstab
To enable this, you need to:
1. set execute-permission on this script
2. symlink this script into /sbin/mount.fuse
Usage:
You can use this in 3 ways:
1. mount -t fuse /path/to/script/or/program /path/of/mount/point [options]
2. mount -t fuse none /path/of/mount/point -o fs=/path/to/script/or/prog[,opt=val...]
3. in /etc/fstab, add:
/path/to/script/or/prog /path/of/mount/point fuse noauto[,...]
"""
import sys, os, time
progname = sys.argv[0]
def usage(ret):
print "Usage: %s /path/to/fuse/fs /path/of/mountpoint [-o options]" % progname
print "or: %s none /path/of/mountpoint [-o fs=/path/to/fuse/fs[,...]]" % progname
sys.exit(ret)
def main():
# initial sanity check
argc = len(sys.argv)
if argc < 3 or sys.argv[3] != "-o":
usage(1)
dev = sys.argv[1]
mountpoint = sys.argv[2]
# grab options, if any
optdict = {}
optlist = []
if argc > 4:
odata = sys.argv[4]
opts = odata.split(",")
#print opts
for o in opts:
try:
k, v = o.split("=", 1)
optdict[k] = v
except:
optlist.append(o)
else:
odata = ""
#print sys.argv
if dev == 'none':
if not optdict.has_key("fs"):
print "%s: Must specify python file with 'fs' option\n" % progname
usage(1)
pyfile = optdict['fs']
else:
pyfile = dev
if not os.path.isfile(pyfile):
print "%s: file %s doesn't exist, or is not a file" % (progname, pyfile)
sys.exit(1)
pypath = os.path.abspath(pyfile)
#print optdict, optlist
# all seems ok - run our fuse fs as a child
if os.fork() == 0:
os.system("fusermount -c -x %s %s %s %s" % (mountpoint, pypath, mountpoint, odata))
else:
#print "parent exiting..."
pass
if __name__ == '__main__':
main()
#@-node:@file mount.fuse
#@-leo