# -*- coding: utf-8 -*- import random import os.path from paramiko.rsakey import RSAKey from jumpserver.api import mkdir from uuid import uuid4 from jumpserver.settings import KEY_DIR def get_rand_pass(): """ get a reandom password. """ lower = [chr(i) for i in range(97,123)] upper = [chr(i).upper() for i in range(97,123)] digit = [str(i) for i in range(10)] password_pool = [] password_pool.extend(lower) password_pool.extend(upper) password_pool.extend(digit) pass_list = [random.choice(password_pool) for i in range(1,14)] pass_list.insert(random.choice(range(1,14)), '@') pass_list.insert(random.choice(range(1,14)), random.choice(digit)) password = ''.join(pass_list) return password def updates_dict(*args): """ surport update multi dict """ result = {} for d in args: result.update(d) return result def gen_keys(): """ 在KEY_DIR下创建一个 uuid命名的目录, 并且在该目录下 生产一对秘钥 :return: 返回目录名(uuid) """ key_basename = "key-" + uuid4().hex key_path_dir = os.path.join(KEY_DIR, 'role_key', key_basename) mkdir(key_path_dir, mode=0755) key = RSAKey.generate(2048) private_key = os.path.join(key_path_dir, 'id_rsa') public_key = os.path.join(key_path_dir, 'id_rsa.pub') key.write_private_key_file(private_key) os.chmod(private_key, 0644) with open(public_key, 'w') as content_file: for data in [key.get_name(), " ", key.get_base64(), " %s@%s" % ("jumpserver", os.uname()[1])]: content_file.write(data) return key_path_dir if __name__ == "__main__": print gen_keys()