From ec97fd91ff30f0298178c736c5e06e8ddeb0fc2d Mon Sep 17 00:00:00 2001 From: Simeon Simeonov Date: Sat, 20 May 2017 13:26:44 +0200 Subject: Initial commit --- smount.py | 37 +++++++++++++++++++++++++++++++++++++ sumount.py | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100755 smount.py create mode 100755 sumount.py diff --git a/smount.py b/smount.py new file mode 100755 index 0000000..9a611d7 --- /dev/null +++ b/smount.py @@ -0,0 +1,37 @@ +#!/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 = 'Invalid / nonexistent mapping: {0}'.format(sys.argv[1]) + data = config_dict[sys.argv[1]] + cstm_error = 'system() error' + subprocess.check_call(['/usr/bin/sshfs', + # data.get('options', ''), + data['src'], + 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() diff --git a/sumount.py b/sumount.py new file mode 100755 index 0000000..808b560 --- /dev/null +++ b/sumount.py @@ -0,0 +1,59 @@ +#!/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() -- cgit v1.3