| import os |
| import string |
| |
| HOME=os.environ['HOME'] |
| |
| USERS=['user%.2d' % i for i in range(1, 21) ] |
| USERS += [ |
| 'admin1', 'admin2', |
| 'dovethunder', 'dovetail', 'dovestream', 'dovetree', 'dovespangle', |
| 'dovemeade', 'dovestar', 'dovebuyer', 'dovesomething', 'dovesweet', 'dovewood' ] |
| SSH_CONFIG = '%s/.ssh/config' % HOME |
| LDIF_FILE = '%s/users.ldif' % HOME |
| KEYFILE='%s/.ssh/allura_rsa' % HOME |
| |
| def main(): |
| |
| # Generate ssh key for SCM login |
| os.system('cp %s %s.bak' % (SSH_CONFIG, SSH_CONFIG)) |
| with open(SSH_CONFIG) as fp: |
| lines = fp.readlines() |
| new_lines = [ |
| SSH_TMPL.substitute( |
| sb_host=sb_host, |
| sb=sb, |
| veid='%d0%.2d' % (sb_host, sb)) |
| for sb_host in 5,6,7,9 |
| for sb in range(99) ] |
| new_lines = '\n'.join(new_lines) |
| found_star = False |
| with open(SSH_CONFIG, 'w') as fp: |
| for line in lines: |
| if not found_star and line.startswith('Host *'): |
| print >> fp, new_lines |
| found_star = True |
| print >> fp, line.rstrip() |
| if not found_star: |
| print >> fp, new_lines |
| os.system("ssh-keygen -t rsa -b 2048 -N '' -f %s" % KEYFILE) |
| |
| # Generate ldif |
| pubkey = open(KEYFILE + '.pub').read() |
| with open(LDIF_FILE, 'w') as fp: |
| for user in USERS: |
| print >> fp, LDIF_TMPL.substitute( |
| user=user, pubkey=pubkey) |
| |
| # Update LDAP |
| assert 0 == os.system('/usr/local/sbin/ldaptool modify -v -f %s' % LDIF_FILE) |
| |
| SSH_TMPL=string.Template(''' |
| Host hg*-$veid hg*-${veid}.sb.sf.net |
| Hostname 10.58.${sb_host}.${sb} |
| Port 17 |
| IdentityFile ~/.ssh/allura_rsa |
| |
| Host svn*-$veid svn*-${veid}.sb.sf.net |
| Hostname 10.58.${sb_host}.${sb} |
| Port 16 |
| IdentityFile ~/.ssh/allura_rsa |
| |
| Host git*-$veid git*-${veid}.sb.sf.net |
| Hostname 10.58.${sb_host}.${sb} |
| Port 23 |
| IdentityFile ~/.ssh/allura_rsa |
| ''') |
| |
| LDIF_TMPL=string.Template(''' |
| dn: cn=$user,ou=users,dc=sf,dc=net |
| changetype: modify |
| add: sshPublicKey |
| sshPublicKey: $pubkey |
| ''') |
| |
| if __name__ == '__main__': |
| main() |