码迷,mamicode.com
首页 > 移动开发 > 详细

guacamole user-mapping文件生成脚本

时间:2018-04-17 17:01:34      阅读:560      评论:0      收藏:0      [点我收藏+]

标签:guacamole生成用户的脚本

#!/usr/bin/python #coding:utf-8 from xml.dom.minidom import Document import json,requests,hashlib,re from config import * def add_host(user,hostname,protocol,ip,port,host_username,host_password,os_family):     h = hostname     p = protocol     connection = config.createElement('connection')     connection.setAttribute('name', h)     user.appendChild(connection)     protocol = config.createElement('protocol')     protocol_text = config.createTextNode(p)     protocol.appendChild(protocol_text)     connection.appendChild(protocol)     param = config.createElement('param')     param.setAttribute('name', 'hostname')     param_text = config.createTextNode(ip)     param.appendChild(param_text)     connection.appendChild(param)     param = config.createElement('param')     param.setAttribute('name', 'port')     param_text = config.createTextNode(port)     param.appendChild(param_text)     connection.appendChild(param)     param = config.createElement('param')     param.setAttribute('name', 'username')     param_text = config.createTextNode(host_username)     param.appendChild(param_text)     connection.appendChild(param)     param = config.createElement('param')     param.setAttribute('name', 'password')     param_text = config.createTextNode(host_password)     param.appendChild(param_text)     connection.appendChild(param)         if os_family == 'win':         param = config.createElement('param')         param.setAttribute('name', 'enable-drive')         param_text = config.createTextNode('true')         param.appendChild(param_text)         connection.appendChild(param)         param = config.createElement('param')         param.setAttribute('name', 'create-drive-path')         param_text = config.createTextNode('true')         param.appendChild(param_text)         connection.appendChild(param)         param = config.createElement('param')         param.setAttribute('name', 'drive-path')         param_text = config.createTextNode('/var/ftp/pub/upload')         param.appendChild(param_text)         connection.appendChild(param)         else:         param = config.createElement('param')         param.setAttribute('name', 'color-scheme')         param_text = config.createTextNode('white-black')         param.appendChild(param_text)         connection.appendChild(param)              return connection def add_user(map,guac_username,guac_password):     user = config.createElement('authorize')     user.setAttribute('password', guac_password)     user.setAttribute('username', guac_username)     user.setAttribute('encoding', 'md5')     result = map.appendChild(user)     return result def init_host(host):     one_host = {}     one_host['ip'] = host['ip']     one_host['hostname'] = host['name']     one_host['os'] = host['osfamily']     one_host['env'] = host['env']     one_host['tag'] = host['tag']     # _tmp = re.match(r'^[a-zA-Z]{3,10}', host['tag'])     # one_host['tag'] = _tmp.group()     return one_host      def get_url(hostname):     import base64     name = hostname + '\x00c\x00default'     init_name = base64.b64encode(name)     ##guacamole服务器的公网ip     url = 'http://ip:8081/#/client/' + init_name       return url      def create_md5(pwd):     m = hashlib.md5()     m.update(pwd)     password = m.hexdigest()     #print password     return password      if __name__=='__main__':     config = Document()     map = config.createElement('user-mapping')     config.appendChild(map)          ##用户是从CMDB API获取的      url = 'http://cmdb.beyondhost.com/api/user/get/'     r = requests.get(url)     users = json.loads(r.text)          ##服务器列表也是cmdb中获取的     url = 'http://cmdb.beyondhost.com/api/get_uhost/'     r = requests.get(url)     hosts = json.loads(r.text)     #print json.dumps(hosts,indent=4)     host_set = []     for host in hosts:         if host['env']=='test':             _tmp = init_host(host)             host_set.append(_tmp)     for user in users:         guac_username = user['username']         guac_password = user['password']         guac_group = user['group']         guac_additionalgroup = user['additionalgroupname']         user = add_user(map, guac_username, guac_password)         for host in host_set:             if guac_group == 'OPS':                 if host['os'] == 'win':                     port = '13040'                     protocol = 'rdp'                     hostname = host['hostname']                     ip = host['ip']                     host_username = 'administrator'                     host_password = admin_passwd_test                     add_host(user, hostname, protocol, ip, port, host_username, host_password,host['os'])                 elif host['os'] == 'linux':                     port = '22'                     protocol = 'ssh'                     hostname = host['hostname']                     ip = host['ip']                     host_username = 'ansible'                     host_password = ansible_passwd_test                     add_host(user, hostname, protocol, ip, port, host_username, host_password,host['os'])                                  else:                 if len(guac_additionalgroup) > 0:                     if host['tag'] in guac_additionalgroup :                         if host['os'] == 'win':                             port = '13040'                             protocol = 'rdp'                             hostname = host['hostname']                             ip = host['ip']                             host_username = 'dev'                             host_password = dev_passwd_test                             add_host(user, hostname, protocol, ip, port, host_username, host_password,host['os'])                                                      elif host['os'] == 'linux':                             port = '22'                             protocol = 'ssh'                             hostname = host['hostname']                             ip = host['ip']                             host_username = 'ansible'                             host_password = ansible_passwd_test                             add_host(user, hostname, protocol, ip, port, host_username, host_password,host['os'])                                  file_object = open('/etc/guacamole/user-mapping.xml','w')     file_object.write(config.toprettyxml(encoding='utf-8'))     file_object.close()




guacamole user-mapping文件生成脚本

标签:guacamole生成用户的脚本

原文地址:http://blog.51cto.com/zengestudy/2104471

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!