#!/usr/bin/env python # -*- encoding: utf8 -*- # Author: Marek WywiaƂ http://onjin.net/ # Date: 2009-06-21 import ConfigParser, sys, os from optparse import OptionParser from getpass import getpass def main(): parser = OptionParser( usage="usage: %prog [options] connection", version="1.0.0", epilog="Author: Marek Wywial http://onjin.net/") parser.add_option('-c', '--config', dest="config", help="config file", action="store", default="config.ini") parser.add_option('-l', '--list', dest="list", help="list available connections", action="store_true", default=False) parser.add_option('-u', '--umount', dest="umount", help="umount give connection", action="store_true", default=False) (options, args) = parser.parse_args() config = get_config(options.config) if options.list: print_connections(config.sections()) sys.exit() if len(args) != 1: parser.error("incorrect number of arguments") connection = args[0] if not config.has_section(connection): print "unknown connection '%s'" % connection sys.exit(0) if options.umount: os.system("fusermount -u %s" % config.get(connection, 'mountpoint')) sys.exit(0) con_params = validate_config(config, connection) ftp_mount(*con_params) def get_config(config_file): # read config config = ConfigParser.ConfigParser() config.readfp(open(config_file)) return config def print_connections(connections): print "Available connections" for connection in connections: print " - %s" % connection def validate_config(config, connection): if not config.has_option(connection, 'host'): print "missing 'host' option for connection '%s'" % connection sys.exit(0) else: host = config.get(connection, 'host') if not config.has_option(connection, 'user'): print "missing 'user' option for connection '%s'" % connection sys.exit(0) else: user = config.get(connection, 'user') if not config.has_option(connection, 'pass'): print "missing 'pass' option for connection '%s'" % connection password = getpass("Password: ") else: password = config.get(connection, 'pass') if not config.has_option(connection, 'mountpoint'): print "missing 'mountpoint' option for connection '%s'" % connection sys.exit(0) else: mountpoint = config.get(connection, 'mountpoint') return (host, user, password, mountpoint) def ftp_mount(host, user, password, mountpoint): os.system('mkdir -p %s' % mountpoint) os.system('curlftpfs ftp://%s:%s@%s %s' % (user, password, host, mountpoint)) if __name__== '__main__': main()