Browse Source

add a pgtool which simplifies the database init operation

Damien ACCORSI 10 years ago
parent
commit
7af546663c
1 changed files with 123 additions and 0 deletions
  1. 123 0
      bin/pgtool

+ 123 - 0
bin/pgtool View File

@@ -0,0 +1,123 @@
1
+#!/usr/bin/python
2
+
3
+import os
4
+import sys
5
+
6
+# print 'Number of arguments:', len(sys.argv), 'arguments.'
7
+# print 'Argument List:', str(sys.argv)
8
+
9
+actions = ['help', 'drop_user', 'create_user', 'delete_user', 'delete_database', 'create_database', 'grant_all_privileges']
10
+def usage():
11
+    print('')
12
+    print('USAGE: '+__file__+' ['+'|'.join(action for action in actions)+'] [parameters]')
13
+    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>')
19
+    print('')
20
+    print('')
21
+    print('NOTE: this tool is intended to be used as \'postgres\' system user')
22
+    print('')
23
+    print('')
24
+
25
+
26
+def show_help_and_exit():
27
+    usage()
28
+    exit()
29
+
30
+def on_result_and_exit(result):
31
+    if result==0:
32
+        exit(0)
33
+    
34
+    print('ERRROR')
35
+    exit(error_code)
36
+
37
+#######
38
+
39
+
40
+if len(sys.argv)<=1:
41
+    show_help_and_exit()
42
+    
43
+if sys.argv[1] not in actions:
44
+    print('Unknown command %s'%sys.argv[1])
45
+    show_help_and_exit()
46
+    
47
+if sys.argv[1]=='help':
48
+    show_help_and_exit()
49
+
50
+
51
+if sys.argv[1]=='create_user':
52
+    if len(sys.argv)!=4:
53
+        show_help_and_exit()
54
+    user_name = sys.argv[2]
55
+    user_pass = sys.argv[3]
56
+    
57
+    print('PG - CREATE USER')
58
+    print('- name: '+user_name)
59
+    print('- password: XXX')
60
+    
61
+    sql = '"CREATE USER %s WITH PASSWORD \'%s\';"' %(user_name, user_pass)
62
+    result = os.system('echo %s|psql' % (sql))
63
+    on_result_and_exit(result)
64
+
65
+
66
+if sys.argv[1]=='delete_user':
67
+    if len(sys.argv)!=3:
68
+        show_help_and_exit()
69
+
70
+    user_name = sys.argv[2]
71
+    
72
+    print('PG - DELETE USER')
73
+    print('- name: '+user_name)
74
+    
75
+    sql = '"DROP ROLE %s;"' %(user_name)
76
+    result = os.system('echo %s|psql' % (sql))
77
+    on_result_and_exit(result)
78
+
79
+
80
+if sys.argv[1]=='create_database':
81
+    if len(sys.argv)!=3:
82
+        show_help_and_exit()
83
+    name = sys.argv[2]
84
+    
85
+    print('PG - CREATE DATABASE')
86
+    print('- name: '+name)
87
+    
88
+    sql = '"CREATE DATABASE %s;"' %(name)
89
+    result = os.system('echo %s|psql' % (sql))
90
+    on_result_and_exit(result)
91
+
92
+if sys.argv[1]=='delete_database':
93
+    if len(sys.argv)!=4:
94
+        show_help_and_exit()
95
+    name = sys.argv[2]
96
+    force = sys.argv[3]
97
+    
98
+    print('PG - DROP DATABASE')
99
+    print('- name: '+name)
100
+    
101
+    if force!='--force':
102
+        print('Add --force option in order to drop a database')
103
+        on_result_and_exit(-1)
104
+        
105
+    sql = '"DROP DATABASE %s;"' %(name)
106
+    result = os.system('echo %s|psql' % (sql))
107
+    on_result_and_exit(result)
108
+
109
+
110
+if sys.argv[1]=='grant_all_privileges':
111
+    if len(sys.argv)!=4:
112
+        show_help_and_exit()
113
+    database_name = sys.argv[2]
114
+    user_name = sys.argv[3]
115
+    
116
+    print('PG - GRANT ALL PRIVILEGES ON DATABASE')
117
+    print('- database: '+database_name)
118
+    print('- user: '+user_name)
119
+    
120
+    sql = '"GRANT ALL PRIVILEGES ON DATABASE %s to %s;"' % (database_name, user_name)
121
+    result = os.system('echo %s|psql' % (sql))
122
+    on_result_and_exit(result)
123
+