|  | @@ -6,19 +6,39 @@ import sys
 | 
	
		
			
			| 6 | 6 |  # print 'Number of arguments:', len(sys.argv), 'arguments.'
 | 
	
		
			
			| 7 | 7 |  # print 'Argument List:', str(sys.argv)
 | 
	
		
			
			| 8 | 8 |  
 | 
	
		
			
			| 9 |  | -actions = ['help', 'drop_user', 'create_user', 'delete_user', 'delete_database', 'create_database', 'grant_all_privileges']
 | 
	
		
			
			|  | 9 | +actions = [
 | 
	
		
			
			|  | 10 | +    'help',
 | 
	
		
			
			|  | 11 | +    'create_database',
 | 
	
		
			
			|  | 12 | +    'create_user',
 | 
	
		
			
			|  | 13 | +    'delete_database',
 | 
	
		
			
			|  | 14 | +    'delete_user',
 | 
	
		
			
			|  | 15 | +    'grant_all_privileges',
 | 
	
		
			
			|  | 16 | +    'test_connection'
 | 
	
		
			
			|  | 17 | +]
 | 
	
		
			
			|  | 18 | +
 | 
	
		
			
			| 10 | 19 |  def usage():
 | 
	
		
			
			| 11 | 20 |      print('')
 | 
	
		
			
			| 12 | 21 |      print('USAGE: '+__file__+' ['+'|'.join(action for action in actions)+'] [parameters]')
 | 
	
		
			
			| 13 | 22 |      print('')
 | 
	
		
			
			| 14 |  | -    print('    '+__file__+' create_user <user_name> <password>')
 | 
	
		
			
			| 15 |  | -    print('    '+__file__+' delete_user <user_name>')
 | 
	
		
			
			| 16 |  | -    print('    '+__file__+' create_database <database_name>')
 | 
	
		
			
			| 17 |  | -    print('    '+__file__+' delete_database <database_name> --force')
 | 
	
		
			
			| 18 |  | -    print('    '+__file__+' grant_all_privileges <database_name> <user_name>')
 | 
	
		
			
			|  | 23 | +    print('    Role management')
 | 
	
		
			
			|  | 24 | +    print('')
 | 
	
		
			
			|  | 25 | +    print('        '+__file__+' create_user <user_name> <password>')
 | 
	
		
			
			|  | 26 | +    print('        '+__file__+' delete_user <user_name>')
 | 
	
		
			
			|  | 27 | +    print('')
 | 
	
		
			
			|  | 28 | +    print('    Database management')
 | 
	
		
			
			|  | 29 | +    print('')
 | 
	
		
			
			|  | 30 | +    print('        '+__file__+' create_database <database_name>')
 | 
	
		
			
			|  | 31 | +    print('        '+__file__+' delete_database <database_name> --force')
 | 
	
		
			
			|  | 32 | +    print('        '+__file__+' grant_all_privileges <database_name> <user_name>')
 | 
	
		
			
			| 19 | 33 |      print('')
 | 
	
		
			
			|  | 34 | +    print('    Other')
 | 
	
		
			
			| 20 | 35 |      print('')
 | 
	
		
			
			| 21 |  | -    print('NOTE: this tool is intended to be used as \'postgres\' system user')
 | 
	
		
			
			|  | 36 | +    print('        '+__file__+' test_connection <database_name> <user_name> <password> [<hostname>]')
 | 
	
		
			
			|  | 37 | +    print('')
 | 
	
		
			
			|  | 38 | +    print('')
 | 
	
		
			
			|  | 39 | +    print('NOTES:')
 | 
	
		
			
			|  | 40 | +    print('    - this tool is intended to be used as \'postgres\' system user')
 | 
	
		
			
			|  | 41 | +    print('    - default hostname is 127.0.0.1')
 | 
	
		
			
			| 22 | 42 |      print('')
 | 
	
		
			
			| 23 | 43 |      print('')
 | 
	
		
			
			| 24 | 44 |  
 | 
	
	
		
			
			|  | @@ -27,11 +47,15 @@ def show_help_and_exit():
 | 
	
		
			
			| 27 | 47 |      usage()
 | 
	
		
			
			| 28 | 48 |      exit()
 | 
	
		
			
			| 29 | 49 |  
 | 
	
		
			
			| 30 |  | -def on_result_and_exit(result):
 | 
	
		
			
			| 31 |  | -    if result==0:
 | 
	
		
			
			|  | 50 | +def on_result_and_exit(error_code):
 | 
	
		
			
			|  | 51 | +    if error_code==0:
 | 
	
		
			
			|  | 52 | +        print('')
 | 
	
		
			
			|  | 53 | +        print('')
 | 
	
		
			
			| 32 | 54 |          exit(0)
 | 
	
		
			
			| 33 | 55 |      
 | 
	
		
			
			| 34 | 56 |      print('ERRROR')
 | 
	
		
			
			|  | 57 | +    print('')
 | 
	
		
			
			|  | 58 | +    print('')
 | 
	
		
			
			| 35 | 59 |      exit(error_code)
 | 
	
		
			
			| 36 | 60 |  
 | 
	
		
			
			| 37 | 61 |  #######
 | 
	
	
		
			
			|  | @@ -47,17 +71,24 @@ if sys.argv[1] not in actions:
 | 
	
		
			
			| 47 | 71 |  if sys.argv[1]=='help':
 | 
	
		
			
			| 48 | 72 |      show_help_and_exit()
 | 
	
		
			
			| 49 | 73 |  
 | 
	
		
			
			|  | 74 | +########################################
 | 
	
		
			
			|  | 75 | +#
 | 
	
		
			
			|  | 76 | +# BELOW ARE STANDARD ACTIONS
 | 
	
		
			
			|  | 77 | +#
 | 
	
		
			
			|  | 78 | +########################################
 | 
	
		
			
			| 50 | 79 |  
 | 
	
		
			
			|  | 80 | +print('')
 | 
	
		
			
			| 51 | 81 |  if sys.argv[1]=='create_user':
 | 
	
		
			
			| 52 | 82 |      if len(sys.argv)!=4:
 | 
	
		
			
			| 53 | 83 |          show_help_and_exit()
 | 
	
		
			
			| 54 | 84 |      user_name = sys.argv[2]
 | 
	
		
			
			| 55 | 85 |      user_pass = sys.argv[3]
 | 
	
		
			
			| 56 | 86 |      
 | 
	
		
			
			| 57 |  | -    print('PG - CREATE USER')
 | 
	
		
			
			| 58 |  | -    print('- name: '+user_name)
 | 
	
		
			
			| 59 |  | -    print('- password: XXX')
 | 
	
		
			
			| 60 |  | -    
 | 
	
		
			
			|  | 87 | +    print('PG # CREATE USER')
 | 
	
		
			
			|  | 88 | +    print('----------------')
 | 
	
		
			
			|  | 89 | +    print('name:       '+user_name)
 | 
	
		
			
			|  | 90 | +    print('password:   XXX')
 | 
	
		
			
			|  | 91 | +
 | 
	
		
			
			| 61 | 92 |      sql = '"CREATE USER %s WITH PASSWORD \'%s\';"' %(user_name, user_pass)
 | 
	
		
			
			| 62 | 93 |      result = os.system('echo %s|psql' % (sql))
 | 
	
		
			
			| 63 | 94 |      on_result_and_exit(result)
 | 
	
	
		
			
			|  | @@ -69,9 +100,11 @@ if sys.argv[1]=='delete_user':
 | 
	
		
			
			| 69 | 100 |  
 | 
	
		
			
			| 70 | 101 |      user_name = sys.argv[2]
 | 
	
		
			
			| 71 | 102 |      
 | 
	
		
			
			| 72 |  | -    print('PG - DELETE USER')
 | 
	
		
			
			| 73 |  | -    print('- name: '+user_name)
 | 
	
		
			
			| 74 |  | -    
 | 
	
		
			
			|  | 103 | +    print('PG # DELETE USER')
 | 
	
		
			
			|  | 104 | +    print('------------------')
 | 
	
		
			
			|  | 105 | +    print('name:       '+user_name)
 | 
	
		
			
			|  | 106 | +    print('')
 | 
	
		
			
			|  | 107 | +
 | 
	
		
			
			| 75 | 108 |      sql = '"DROP ROLE %s;"' %(user_name)
 | 
	
		
			
			| 76 | 109 |      result = os.system('echo %s|psql' % (sql))
 | 
	
		
			
			| 77 | 110 |      on_result_and_exit(result)
 | 
	
	
		
			
			|  | @@ -81,9 +114,11 @@ if sys.argv[1]=='create_database':
 | 
	
		
			
			| 81 | 114 |      if len(sys.argv)!=3:
 | 
	
		
			
			| 82 | 115 |          show_help_and_exit()
 | 
	
		
			
			| 83 | 116 |      name = sys.argv[2]
 | 
	
		
			
			| 84 |  | -    
 | 
	
		
			
			| 85 |  | -    print('PG - CREATE DATABASE')
 | 
	
		
			
			| 86 |  | -    print('- name: '+name)
 | 
	
		
			
			|  | 117 | +
 | 
	
		
			
			|  | 118 | +    print('PG # CREATE DATABASE')
 | 
	
		
			
			|  | 119 | +    print('--------------------')
 | 
	
		
			
			|  | 120 | +    print('name:       '+name)
 | 
	
		
			
			|  | 121 | +    print('')
 | 
	
		
			
			| 87 | 122 |      
 | 
	
		
			
			| 88 | 123 |      sql = '"CREATE DATABASE %s;"' %(name)
 | 
	
		
			
			| 89 | 124 |      result = os.system('echo %s|psql' % (sql))
 | 
	
	
		
			
			|  | @@ -95,8 +130,10 @@ if sys.argv[1]=='delete_database':
 | 
	
		
			
			| 95 | 130 |      name = sys.argv[2]
 | 
	
		
			
			| 96 | 131 |      force = sys.argv[3]
 | 
	
		
			
			| 97 | 132 |      
 | 
	
		
			
			| 98 |  | -    print('PG - DROP DATABASE')
 | 
	
		
			
			| 99 |  | -    print('- name: '+name)
 | 
	
		
			
			|  | 133 | +    print('PG # DROP DATABASE')
 | 
	
		
			
			|  | 134 | +    print('------------------')
 | 
	
		
			
			|  | 135 | +    print('name:       '+name)
 | 
	
		
			
			|  | 136 | +    print('')
 | 
	
		
			
			| 100 | 137 |      
 | 
	
		
			
			| 101 | 138 |      if force!='--force':
 | 
	
		
			
			| 102 | 139 |          print('Add --force option in order to drop a database')
 | 
	
	
		
			
			|  | @@ -113,11 +150,36 @@ if sys.argv[1]=='grant_all_privileges':
 | 
	
		
			
			| 113 | 150 |      database_name = sys.argv[2]
 | 
	
		
			
			| 114 | 151 |      user_name = sys.argv[3]
 | 
	
		
			
			| 115 | 152 |      
 | 
	
		
			
			| 116 |  | -    print('PG - GRANT ALL PRIVILEGES ON DATABASE')
 | 
	
		
			
			| 117 |  | -    print('- database: '+database_name)
 | 
	
		
			
			| 118 |  | -    print('- user: '+user_name)
 | 
	
		
			
			|  | 153 | +    print('PG # GRANT ALL PRIVILEGES ON DATABASE')
 | 
	
		
			
			|  | 154 | +    print('-------------------------------------')
 | 
	
		
			
			|  | 155 | +    print('database:   '+database_name)
 | 
	
		
			
			|  | 156 | +    print('user:       '+user_name)
 | 
	
		
			
			|  | 157 | +    print('')
 | 
	
		
			
			| 119 | 158 |      
 | 
	
		
			
			| 120 | 159 |      sql = '"GRANT ALL PRIVILEGES ON DATABASE %s to %s;"' % (database_name, user_name)
 | 
	
		
			
			| 121 | 160 |      result = os.system('echo %s|psql' % (sql))
 | 
	
		
			
			| 122 | 161 |      on_result_and_exit(result)
 | 
	
		
			
			| 123 | 162 |  
 | 
	
		
			
			|  | 163 | +if sys.argv[1]=='test_connection':
 | 
	
		
			
			|  | 164 | +    if len(sys.argv)<5:
 | 
	
		
			
			|  | 165 | +        show_help_and_exit()
 | 
	
		
			
			|  | 166 | +    
 | 
	
		
			
			|  | 167 | +    hostname = '127.0.0.1'
 | 
	
		
			
			|  | 168 | +    database_name = sys.argv[2]
 | 
	
		
			
			|  | 169 | +    user_name = sys.argv[3]
 | 
	
		
			
			|  | 170 | +    password = sys.argv[4]
 | 
	
		
			
			|  | 171 | +    
 | 
	
		
			
			|  | 172 | +    if len(sys.argv)>=6:
 | 
	
		
			
			|  | 173 | +        hostname = sys.argv[5]
 | 
	
		
			
			|  | 174 | +    
 | 
	
		
			
			|  | 175 | +    print('PG # CONNECT TO DATABASE')
 | 
	
		
			
			|  | 176 | +    print('------------------------')
 | 
	
		
			
			|  | 177 | +    print('server:     '+hostname)
 | 
	
		
			
			|  | 178 | +    print('database:   '+database_name)
 | 
	
		
			
			|  | 179 | +    print('username:   '+user_name)
 | 
	
		
			
			|  | 180 | +    print('')
 | 
	
		
			
			|  | 181 | +    
 | 
	
		
			
			|  | 182 | +    result = os.system('export PGPASSWORD=%s; echo "SELECT NOW();"|psql -h %s -U %s %s' % (password, hostname, user_name, database_name))
 | 
	
		
			
			|  | 183 | +    on_result_and_exit(result)
 | 
	
		
			
			|  | 184 | +
 | 
	
		
			
			|  | 185 | +
 |