mirror of
https://github.com/libfuse/libfuse.git
synced 2024-12-12 21:44:11 +08:00
86 lines
2.1 KiB
Python
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
|