Permalink
Cannot retrieve contributors at this time
#! /usr/bin/env python | |
import sys, os, tempfile, psycopg2 | |
if len(sys.argv) != 3: | |
print 'usage: mkauth DSTFN CONNSTR' | |
sys.exit(1) | |
# read old file | |
fn = sys.argv[1] | |
try: | |
old = open(fn, 'r').read() | |
except IOError: | |
old = '' | |
# create new file data | |
db = psycopg2.connect(sys.argv[2]) | |
curs = db.cursor() | |
curs.execute("select usename, passwd from pg_shadow order by 1") | |
lines = [] | |
for user, psw in curs.fetchall(): | |
user = user.replace('"', '""') | |
if not psw: psw = '' | |
psw = psw.replace('"', '""') | |
lines.append('"%s" "%s" ""\n' % (user, psw)) | |
db.commit() | |
cur = "".join(lines) | |
# if changed, replace data securely | |
if old != cur: | |
fd, tmpfn = tempfile.mkstemp(dir = os.path.split(fn)[0]) | |
f = os.fdopen(fd, 'w') | |
f.write(cur) | |
f.close() | |
os.rename(tmpfn, fn) |