首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
移动开发
> 详细
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
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
关闭苹果IOS app自动更新
2021-07-29
开发一个即时通讯App
2021-07-28
iOS 跳转App Store进行评分
2021-07-26
诺基亚短信生成!太好玩了
2021-07-26
【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn
2021-07-26
Android系统编程入门系列之界面Activity响应丝滑的传统动画
2021-07-26
uniapp h5,app两端复制文本
2021-07-22
uni-app滚动视图容器(scroll-view)之监听上拉事件
2021-07-21
新型横向移动工具原理分析、代码分析、优缺点以及检测方案
2021-07-19
Android系统编程入门系列之界面Activity交互响应
2021-07-19
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!