#!/usr/bin/env python # -*- coding: utf-8 -*- import json import os import subprocess import sys def main(): """ """ if (len(sys.argv) != 2): sys.exit('Invalid parameter. Usage: {0} \n'.format( sys.argv[0])) cstm_error = '' try: cstm_error = 'Could not open config (~/.smount.json)' with open(os.path.expanduser('~/.smount.json')) as fp: config_dict = json.load(fp) cstm_error = 'Errror while executing all' if sys.argv[1].lower() == 'all': mounts = set() umounted = list() # already umounted with open('/etc/mtab') as fp: for line in fp: mounts.update(line.strip().split()) for key, value in config_dict.items(): if value['dest'] not in mounts: print('{mount} not in /etc/mtab'.format(mount=key)) continue if value['dest'] in umounted: print('{mount}: {dest} already umounted'.format( mount=key, dest=value['dest'])) continue subprocess.check_call(['/usr/bin/fusermount', '-u', value['dest']]) umounted.append(value['dest']) print('umonted: {key} - {dest}'.format( key=key, dest=value['dest'])) sys.exit(0) cstm_error = 'Invalid / nonexistent mapping: {0}'.format(sys.argv[1]) data = config_dict[sys.argv[1]] subprocess.check_call(['/usr/bin/fusermount', '-u', data['dest']]) except subprocess.CalledProcessError as e: sys.stderr.write('Execution error: {0}\n'.format(e)) sys.stderr.flush() except Exception as e: sys.stderr.write('Error: {0}\n'.format(cstm_error)) sys.stderr.flush() if __name__ == '__main__': main()