Apollo批量给新创建的用户授可编辑权限
背景:
我们要在Apollo中批量给新创建的用户授可编辑权限
apollo系统版本: java-2.1.0
管理员账号:Apollo
可编辑账号:guoyabin
过程:
在没写这段代码的时候从网上搜了一些文章如下:
apollo_adminservice、apollo_configservice改成自己的域名,在不知道用户密码的前提下可以获取cluster、app_ids、namespaces的脚本。
# !/usr/bin/env python
# -*-coding:utf-8 -*- """
# File : apollo.py
# Time :2023/6/6/006 11:01
# Author :GuoYabin
# version :python 3.8
# Description:利用apollo_adminservice的8090和apollo_configservice的8080
获取所有Apollo环境/appid/cluster
"""
import json
import time
import requests
from urllib.parse import urlparse def get_response(uri):
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20200101 Firefox/60.0",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-CN,zh;q=0.9",
"Connection": "close"
}
return requests.get(uri, headers=headers, timeout=20, allow_redirects=False) def get_app_ids(uri):
print(uri)
app_ids = []
response = get_response("{}/apps".format(uri))
html = response.text
print(html)
if response.status_code == 200:
for app in json.loads(html):
app_ids.append(app.get("appId"))
return app_ids def get_clusters(uri, app_ids):
clusters = {}
for app_id in app_ids:
clusters[app_id] = []
response = get_response("{}/apps/{}/clusters".format(uri, app_id))
html = response.text
if response.status_code == 200:
for app in json.loads(html):
clusters[app_id].append(app.get("name"))
return clusters def get_namespaces(uri, app_ids, clusters):
namespaces = {}
for app_id in app_ids:
namespaces[app_id] = []
for cluster in clusters[app_id]:
url = "{}/apps/{}/clusters/{}/namespaces".format(uri, app_id, cluster)
response = get_response(url)
html = response.text
if response.status_code == 200:
for app in json.loads(html):
namespaces[app_id].append(app.get("namespaceName"))
return namespaces def get_configurations(uri, app_ids, clusters, namespaces):
configurations = []
for app_id in app_ids:
for cluster in clusters[app_id]:
for namespace in namespaces[app_id]:
key_name = "{}-{}-{}".format(app_id, cluster, namespace)
url = "{}/configs/{}/{}/{}".format(uri, app_id, cluster, namespace)
response = get_response(url)
code = response.status_code
html = response.text
print("[+] get {} configs, status: {}".format(url, code))
time.sleep(1)
if code == 200:
configurations.append({key_name: json.loads(html)})
return configurations if __name__ == "__main__":
apollo_adminservice = "http://192.168.40.185:8090"
apollo_configservice = "http://192.168.40.185:8080" scheme0, netloc0, path0, params0, query0, fragment0 = urlparse(apollo_adminservice)
host0 = "{}://{}".format(scheme0, netloc0) _ids = get_app_ids(host0)
print("All appIds:")
print(_ids) _clusters = get_clusters(host0, _ids)
print("\nAll Clusters:")
print(_clusters) _namespaces = get_namespaces(host0, _ids, _clusters)
print("\nAll Namespaces:")
print(_namespaces)
print() scheme1, netloc1, path1, params1, query1, fragment1 = urlparse(apollo_configservice)
host1 = "{}://{}".format(scheme1, netloc1)
_configurations = get_configurations(host1, _ids, _clusters, _namespaces)
print("\nresults:\n")
print(_configurations)
解决方法:
下面我们自己写一个批量授权的方法、使用管理员apollo给guoyabin账号授权,允许guoyabin账号可以编辑,但无法发布权限。
# !/usr/bin/env python
# -*-coding:utf-8 -*- """
# File : apollo.py
# Time :2023/6/6/006 11:01
# Author :GuoYabin
# version :python 3.8
# Description:模拟Apollo登陆,获取所有envs/appid添加guoyabin账号编辑权限
""" import requests
import json class apollo:
def __init__(self):
self.username = "apollo"
self.password = "*********"
self.apollourl = "http://**************"
self.addauth = "guoyabin"
self.session = requests.session()
self.headers = self.setheaders() def login(self):
url = '{}/signin'.format(self.apollourl)
payload = {
"username": self.username,
"password": self.password,
"login-submit": "登录"
}
self.session.post(url=url,data=payload)
res = self.session.cookies
return (res.get_dict()['SESSION']) def setheaders(self):
session = self.login()
myheaders = {
"Accept": "application/json, text/plain, */*",
"Cookie": "Hm_lvt_488a0e7e13b847119c47d080b3dc7272=1677469471; NG_TRANSLATE_LANG_KEY=zh-CN; SESSION={0}".format(session),
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36"
}
return (myheaders) def getenvs(self):
url = 'http://{}/envs'.format(self.apollourl)
head = self.headers
res = requests.get(url=url,headers=head)
return (res.text) def getappid(self):
url = 'http://{}/apps'.format(self.apollourl)
params = {'page': 0}
res = requests.get(url, params=params,headers=self.headers)
date = json.loads(res.text)
allapp = [d['appId'] for d in date]
return (allapp) def addauth(self,appid):
uri = 'http://{0}/apps/{1}/namespaces/application/roles/ModifyNamespace'.format(self.apollourl,appid)
playload = self.addauth
try:
response = requests.post(url=uri,data=playload,headers=self.headers)
response.raise_for_status()
except requests.exceptions.HTTPError as error:
json_data = error.response.json()
error_message = json_data['message']
print(appid,error_message) if __name__ == '__main__':
apollo_obj = apollo()
for i in apollo_obj.getappid():
apollo_obj.addauth(i)
Apollo批量给新创建的用户授可编辑权限的更多相关文章
- Oracle 创建普通用户,并赋予权限
采用sys or system / manager as sysdba; 连接数据库. 创建普通用户konglin: create user konglin identified by pwd_ora ...
- mysql创建本地用户及赋予数据库权限的方法示例
大家在安装 mysql 时通常会生成一个超级用户 root,很多人之后就一直沿用这一个用户,虽然这会很方便,但超级用户权限太大,在所有地方使用它通常是一个安全隐患. 这一点跟操作系统的用户管理也是类似 ...
- 给新创建的用户 赋予所有的权利 *.* 查看权限 删除用户 ---------DCL用户权限管理篇
第一步:进入数据库以后,先用 show databases; 再use mysql; 再 show tables; 再 select user,host from mysql.user; ...
- deepin 新创建的用户文件管理中挂载点打不开
使用 root 用户可以打开,但是使用非 root 用户打不开 原因是权限不够 test1@test1-PC:~$ cd /media/ test1@test1-PC:/media$ ls apt c ...
- centos上为新创建的用户(git)指定根目录并生成公钥和私钥
1.修改用户的根目录 vim /etc/passed 2.su git 3.ssh-keygen -t rsa ssh-keygen -t rsa 4.如图所示,如果要实现无密码访问git仓库,把公钥 ...
- 为Ubuntu新创建用户创建默认.bashrc并自动加载
首先,su – 到新创建的用户 拷贝默认的.bashrc过来 1 cp /etc/skel/.bashrc ~/ 然后创建.profile文件 1 vi ~/.profile 粘贴下面的内容 ...
- oracle 创建一个用户,并且设定只能访问指定的对象
出处:http://www.cnblogs.com/BetterWF/archive/2012/07/03/2574416.html 今天在开发接口时候,需要给接口开发公司提供一个ORACLE 用户, ...
- sql server 2008 数据库管理系统使用SQL语句创建登录用户详细步骤
--服务器角色:--固定服务器角色具有一组固定的权限,并且适用于整个服务器范围. 它们专门用于管理 SQL Server,且不能更改分配给它们的权限. --可以在数据库中不存在用户帐户的情况下向固定服 ...
- 第一安装oracle数据库后,需要创建一个用户,给用户解锁并赋予权限
1.第一次安装oracle数据库应该做的事情. 注: 1.安装oracle后需要创建用户,连接数据库,(注意数据库名,还有好像后面的 ":"也有影响) 2.解锁用户, 3.授予新登 ...
- Linux下useradd命令创建的用户不能登录的问题
Linux下useradd命令创建的用户不能登录的问题 问题: 用useradd命令新创建一个用户tester 密码pwdtest mkdir -p /home/tester(创建文件夹) user ...
随机推荐
- ABAP配置:OY01 定义国家/地区
配置:OY01 定义国家/地区 事务代码:OY01 配置路径: SPRO-ABAP平台-常规设置-设置国家-定义国家/地区 配置路径截图: 配置描述: 国家是SAP里面一个非常重要的概念,SAP国家概 ...
- 如何快速的开发一个完整的iOS直播app(点赞功能)
客户端代码 点击小红心,发送socket给服务器,并且要传递房间Key给服务器,通知给哪个主播点赞,就能传入到对应的分组socket中 怎么传递房间key,房间Key在主播界面,一般一个客户端,只会产 ...
- Transformer 原理图解
转载:小白看得懂的 Transformer (图解) 引言 谷歌推出的BERT模型在11项NLP任务中夺得SOTA结果,引爆了整个NLP界.而BERT取得成功的一个关键因素是Transformer的强 ...
- 二叉树神级遍历算法:morris遍历算法
morris遍历的实质 建立一种机制,对于没有左子树的节点只到达一次,对于有左子树的节点会到达两次 morris遍历的实现原则 记作当前节点为cur. 如果cur无左孩子,cur向右移动(cur=cu ...
- 0511-FileWrite字符输出流和JDK7中try..finally新的特性
package A10_IOStream; import java.io.*; /* java.io.Writer:字符输出流,是所有字符数出流的最顶层抽象父类 共性方法 void write(int ...
- Hive表误删恢复
一.简介 因hive表删除后,hdfs文件会先放入回收站,定期清理回收站.在回收之前可以进行清理数据 二.恢复步骤 2.1 看表存储是否损坏select type from dw.ods_test1 ...
- 使用C#对Godot属性进行改写(其实是覆盖)
本文地址:https://www.cnblogs.com/oberon-zjt0806/p/14568221.html 背景 我还真没想到C#这个鬼东西还能这么用-- 起初是想通过某种办法改写一下La ...
- 关于DateTime的自定义转换
关于DateTime的自定义转换.把字符串时间转换成可以供DateTime类型识别的字符串类型的粗略实现. /// <summary> /// 把从数据库中读取的字符串的CurrentTi ...
- Deepseek深度求索教程:从入门到精通,免费获取清华大学新闻学院104页完整指南
在当今信息爆炸的时代,如何高效地获取和利用知识成为了每个人面临的挑战.Deepseek深度求索作为一款强大的信息检索工具,正逐渐成为学术界和专业人士的首选.为了帮助大家更好地掌握Deepseek的使用 ...
- Markdown 语法深度详解与实战演示
一.引言 在当今数字化的时代,高效地处理和呈现文本信息变得至关重要.Markdown 作为一种轻量级标记语言,因其简洁.易读.易写的特点,受到了广大开发者.写作者和内容创作者的喜爱.无论您是撰写博客. ...