From eea56ea0e5f7b0303d758661bd3fbb497e78a5d9 Mon Sep 17 00:00:00 2001 From: ibuler <ibuler@qq.com> Date: Fri, 20 Nov 2015 21:30:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9A=E4=B9=89=E9=80=9A=E7=94=A8=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jperm/ansible_api.py | 17 ++++++++--------- jperm/perm_api.py | 5 +++++ jumpserver/api.py | 13 +++++++++++-- juser/user_api.py | 2 +- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/jperm/ansible_api.py b/jperm/ansible_api.py index f10d8957..e94b79dc 100644 --- a/jperm/ansible_api.py +++ b/jperm/ansible_api.py @@ -82,11 +82,13 @@ class MyInventory(object): hostport = host.get("port") username = host.get("username") password = host.get("password") + ssh_key = host.get("ssh_key") my_host = Host(name=hostname, port=hostport) my_host.set_variable('ansible_ssh_host', hostname) my_host.set_variable('ansible_ssh_port', hostport) my_host.set_variable('ansible_ssh_user', username) my_host.set_variable('ansible_ssh_pass', password) + my_host.set_variable('ansible_ssh_private_key_file', ssh_key) # set other variables for key, value in host.iteritems(): if key not in ["hostname", "port", "username", "password"]: @@ -156,12 +158,12 @@ class Command(MyInventory): if module_name not in ["raw", "command", "shell"]: raise CommandValueError("module_name", "module_name must be of the 'raw, command, shell'") - hoc = MyRunner(module_name=module_name, - module_args=command, - timeout=timeout, - inventory=self.inventory, - pattern=pattern, - forks=forks, + hoc = Runner(module_name=module_name, + module_args=command, + timeout=timeout, + inventory=self.inventory, + pattern=pattern, + forks=forks, ) self.results = hoc.run() @@ -418,8 +420,6 @@ class Tasks(Command): return {"status": "failed", "msg": self.msg} if self.msg else {"status": "ok", "result": result} - - class CustomAggregateStats(callbacks.AggregateStats): """ Holds stats about per-host activity during playbook runs. @@ -438,7 +438,6 @@ class CustomAggregateStats(callbacks.AggregateStats): self.results.append(runner_results) - def summarize(self, host): """ Return information about a particular host diff --git a/jperm/perm_api.py b/jperm/perm_api.py index 5496020e..1bcfe067 100644 --- a/jperm/perm_api.py +++ b/jperm/perm_api.py @@ -10,6 +10,11 @@ from jperm.models import PermRole from jperm.models import PermRule +class PermGet(object): + def __init__(self): + pass + + def get_object_list(model, id_list): """æ ¹æ®id列表获å–对象列表""" object_list = [] diff --git a/jumpserver/api.py b/jumpserver/api.py index f9285c16..198b11bf 100644 --- a/jumpserver/api.py +++ b/jumpserver/api.py @@ -3,6 +3,7 @@ import os, sys, time, re from Crypto.Cipher import AES import crypt +import pwd from binascii import b2a_hex, a2b_hex import hashlib import datetime @@ -44,6 +45,14 @@ def set_log(level): return logger_f +def chown(path, user, group='', ): + if not group: + group = user + uid = pwd.getpwnam(user).pwd_uid + gid = pwd.getpwnam(group).gr_gid + os.chown(path, uid, gid) + + def page_list_return(total, current=1): """ page @@ -390,7 +399,7 @@ def bash(cmd): return subprocess.call(cmd, shell=True) -def mkdir(dir_name, username='root', mode=0755): +def mkdir(dir_name, username='', mode=0755): """ insure the dir exist and mode ok 目录å˜åœ¨ï¼Œå¦‚æžœä¸å˜åœ¨å°±å»ºç«‹ï¼Œå¹¶ä¸”æƒé™æ£ç¡® @@ -399,7 +408,7 @@ def mkdir(dir_name, username='root', mode=0755): os.makedirs(dir_name) os.chmod(dir_name, mode) if username: - bash('chown %s:%s %s' % (username, username, dir_name)) + chown(dir_name, username) def http_success(request, msg): diff --git a/juser/user_api.py b/juser/user_api.py index 87e7b5cc..13dfb727 100644 --- a/juser/user_api.py +++ b/juser/user_api.py @@ -143,7 +143,7 @@ def gen_ssh_key(username, password='', with open(authorized_key_file, 'w') as auth_f: auth_f.write(pub_f.read()) os.chmod(authorized_key_file, 0600) - bash('chown %s:%s %s' % (username, username, authorized_key_file)) + chown(authorized_key_file, username) def server_add_user(username, password, ssh_key_pwd, ssh_key_login_need): -- 2.18.0