#!/usr/bin/python import os import sys # print 'Number of arguments:', len(sys.argv), 'arguments.' # print 'Argument List:', str(sys.argv) actions = [ 'help', 'create_database', 'create_user', 'delete_database', 'delete_user', 'grant_all_privileges', 'test_connection' ] def usage(): print('') print('USAGE: '+__file__+' ['+'|'.join(action for action in actions)+'] [parameters]') print('') print(' Role management') print('') print(' '+__file__+' create_user ') print(' '+__file__+' delete_user ') print('') print(' Database management') print('') print(' '+__file__+' create_database ') print(' '+__file__+' delete_database --force') print(' '+__file__+' grant_all_privileges ') print('') print(' Other') print('') print(' '+__file__+' test_connection []') print('') print('') print('NOTES:') print(' - this tool is intended to be used as \'postgres\' system user') print(' - default hostname is 127.0.0.1') print('') print('') def show_help_and_exit(): usage() exit() def on_result_and_exit(error_code): if error_code==0: print('') print('') exit(0) print('ERRROR') print('') print('') exit(error_code) ####### if len(sys.argv)<=1: show_help_and_exit() if sys.argv[1] not in actions: print('Unknown command %s'%sys.argv[1]) show_help_and_exit() if sys.argv[1]=='help': show_help_and_exit() ######################################## # # BELOW ARE STANDARD ACTIONS # ######################################## print('') if sys.argv[1]=='create_user': if len(sys.argv)!=4: show_help_and_exit() user_name = sys.argv[2] user_pass = sys.argv[3] print('PG # CREATE USER') print('----------------') print('name: '+user_name) print('password: XXX') sql = '"CREATE USER %s WITH PASSWORD \'%s\';"' %(user_name, user_pass) result = os.system('echo %s|psql' % (sql)) on_result_and_exit(result) if sys.argv[1]=='delete_user': if len(sys.argv)!=3: show_help_and_exit() user_name = sys.argv[2] print('PG # DELETE USER') print('------------------') print('name: '+user_name) print('') sql = '"DROP ROLE %s;"' %(user_name) result = os.system('echo %s|psql' % (sql)) on_result_and_exit(result) if sys.argv[1]=='create_database': if len(sys.argv)!=3: show_help_and_exit() name = sys.argv[2] print('PG # CREATE DATABASE') print('--------------------') print('name: '+name) print('') sql = '"CREATE DATABASE %s;"' %(name) result = os.system('echo %s|psql' % (sql)) on_result_and_exit(result) if sys.argv[1]=='delete_database': if len(sys.argv)!=4: show_help_and_exit() name = sys.argv[2] force = sys.argv[3] print('PG # DROP DATABASE') print('------------------') print('name: '+name) print('') if force!='--force': print('Add --force option in order to drop a database') on_result_and_exit(-1) sql = '"DROP DATABASE %s;"' %(name) result = os.system('echo %s|psql' % (sql)) on_result_and_exit(result) if sys.argv[1]=='grant_all_privileges': if len(sys.argv)!=4: show_help_and_exit() database_name = sys.argv[2] user_name = sys.argv[3] print('PG # GRANT ALL PRIVILEGES ON DATABASE') print('-------------------------------------') print('database: '+database_name) print('user: '+user_name) print('') sql = '"GRANT ALL PRIVILEGES ON DATABASE %s to %s;"' % (database_name, user_name) result = os.system('echo %s|psql' % (sql)) on_result_and_exit(result) if sys.argv[1]=='test_connection': if len(sys.argv)<5: show_help_and_exit() hostname = '127.0.0.1' database_name = sys.argv[2] user_name = sys.argv[3] password = sys.argv[4] if len(sys.argv)>=6: hostname = sys.argv[5] print('PG # CONNECT TO DATABASE') print('------------------------') print('server: '+hostname) print('database: '+database_name) print('username: '+user_name) print('') result = os.system('export PGPASSWORD=%s; echo "SELECT NOW();"|psql -h %s -U %s %s' % (password, hostname, user_name, database_name)) on_result_and_exit(result)