Skip to content

Instantly share code, notes, and snippets.

@coatezy
Last active April 18, 2017 13:10
Show Gist options
  • Save coatezy/b2b49517e09c2ffec52c1ef2369c125a to your computer and use it in GitHub Desktop.
Save coatezy/b2b49517e09c2ffec52c1ef2369c125a to your computer and use it in GitHub Desktop.
Prints all GitHub organization users SSH keys. Can be used in automation to add github users to ~/.ssh/authorized_keys
#!/usr/bin/env python
#
# Fetches users SSH keys for a GitHub organization and prints them
# Can be used to update ~/.ssh/authorized_keys file
#
# Eg.
# generate_authorized_keys.py simpleweb > ~/.ssh/authorized_keys
#
from datetime import datetime
import json
import sys
def request(url):
try:
from urllib import urlopen
response = urlopen(url)
except ImportError:
from urllib import request
response = request.urlopen(url)
return response.read().decode("utf-8")
def main():
url = 'https://api.github.com/orgs/{0}'.format(sys.argv[1])
organization = json.loads(request(url))
members_url = organization['members_url'].replace('{/member}', '')
members = json.loads(request(members_url))
keys = '''#
# {0} keys
# {1}
# Generated at #{2}
'''.format(sys.argv[1], members_url, datetime.now())
for username in ([member['login'].lower() for member in members]):
member_keys_url = 'https://github.com/{0}.keys'.format(username)
info = '''#
# @{0}
# {1}
#
'''.format(username, member_keys_url)
keys += info + request(member_keys_url).replace('/\r\n?/', "\n")
print(keys)
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment