自动化创建ETX用户帐号

这篇具有很好参考价值的文章主要介绍了自动化创建ETX用户帐号。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在芯片设计行业,ETX是常见的远程访问环境。用户在通过ETX访问远程环境前必须首先加入ETX系统,然后通过profile分配相关的环境的访问权限。

通常这些操作在ETX WEB页面手工操作,如果我们期望实现用户帐号注册全自动化,就需要将以上操作通过脚本来实现。

经过调查发现ETX提供了REST访问接口,因此帐号注册全自动化就可以实现。

主要流程如下:

自动化创建ETX用户帐号,编程,python,ETX

在调用ETX REST接口前还需要获取ETX API的URL以及访问密钥。登录ETX后,点击右上部用户头像旁边的齿轮图标,在用户设置中选择创建 API keys即可生成ETX API访问密钥。 

自动化创建ETX用户帐号,编程,python,ETX

 ETX登录界面左上角选择 REST API即可显示所有ETX API,点击还可查看API的详细说明和示例。

自动化创建ETX用户帐号,编程,python,ETX

通过 Python 自动创建ETX帐号的示例代码如下:文章来源地址https://www.toymoban.com/news/detail-806603.html

#!/opt/miniconda3/bin/python
################################################################################
#
# Author: Shuguangbo
#
################################################################################

import traceback
import logging
import logging.config
import urllib3
import requests
import json

urllib3.disable_warnings()

class userHandler():
    def __init__(self):
        self._account = ''
        self._userID = ''
        self._etxUserID = ''
        self.getETXGroup()
        ...
        
    def getETXUserID(self):
        session = None
        userData = dict()
        userID = ''
        account = self._account
        try:
            apiurl = self._config['ETX']['ETX_URL'] + f'/etx/api/v2/users?where_login={account}'
            session = requests.Session()
            header = {'Content-Type': 'application/json', 'Authorization': f"ETX {self._config['ETX']['API_KEY']}"}
            result = session.get(apiurl, headers=header, verify=False)
            
            if result.status_code == 200:
                logging.info('Get ETX user ID succeeded.')
                userList = json.loads(result.text)
                userID = userList[0]['id']
                self._etxUserID = userID
            else:
                logging.error('Get ETX user ID failed.')
        except Exception as e:
            logging.error(f"Get ETX user ID failed. error: {str(e)}, stack: {traceback.format_exc()}")
        finally:
            if session:
                session.close()
        return userID

    def getETXGroup(self):
        groupData = dict()
        session = None
        try:
            apiurl = self._config['ETX']['ETX_URL'] + '/etx/api/v2/usergroups'
            session = requests.Session()
            header = {'Content-Type': 'application/json', 'Authorization': f"ETX {self._config['ETX']['API_KEY']}"}
            result = session.get(apiurl, headers=header, verify=False)
            if result.status_code == 200:
                logging.info('Get ETX group info succeeded.')
                groupList = json.loads(result.text)
                for group in groupList:
                    groupData[group['name']] = group
            else:
                logging.error(f'Get ETX group info failed. Error: {result.text}')
                exit(1)

        except Exception as e:
            logging.error(f"GET ETX user group info failed. error: {str(e)}, stack: {traceback.format_exc()}")
            exit(1)
        finally:
            if session:
                session.close()
        self._etxGroups = groupData

    def addETXUserIntoGroup(self, userID, groupID):
        result = True
        session = None
        try:
            apiurl = self._config['ETX']['ETX_URL'] + f'/etx/api/v2/usergroups/{groupID}/members/addbyid/{userID}'
            session = requests.Session()
            header = {'Content-Type': 'application/json', 'Authorization': f"ETX {self._config['ETX']['API_KEY']}"}
            result = session.post(apiurl, headers=header, verify=False)
            if result and result.status_code == 200:
                logging.info(f'Add user {userID} into ETX group {groupID} succeeded.')
            else:
                logging.error(f'Add user {userID} into ETX group {groupID} failed.')
                result = False
        except Exception as e:
            logging.error(f"Add ETX user into user group failed. error: {str(e)}, stack: {traceback.format_exc()}")
            result = False
        finally:
            if session:
                session.close()
        return result


    def registerETXUser(self):
        EMSG = ''
        session = None
        try:
            account = self._account
            name = self._name
            email = self._email
            apiurl = self._config['ETX']['ETX_URL'] + '/etx/api/v2/users'
            session = requests.Session()
            header = {'Content-Type': 'application/json', 'Authorization': f"ETX {self._config['ETX']['API_KEY']}"}
            data = {'login': account, 'name': name, 'email': email, 'role':{'name':'User'}}
            result = session.post(apiurl, headers=header, data=json.dumps(data), verify=False)
            if result and result.status_code == 200:
                userData = json.loads(result.text)
                self._etxUserID = userData['id']
                logging.info(f'Register ETX user {account} succeeded. User id: {userData["id"]}')
            else:
                logging.error(f'Register ETX user {account} failed. Error: {result.text}')
                EMSG = f"Register ETX user {account} failed."
        except Exception as e:
            logging.error(f"Register ETX user {account} failed. Error: {str(e)}")
            EMSG = f"Register ETX user {account} failed."
        finally:
            if session:
                session.close()
        return EMSG
        
    def addETXUser(self):
        EMSG = ''
        try:
            user = self._account

            ret = self._registerETXUser()
            if len(ret):
                EMSG += ret
                return EMSG

            userID = self._etxUserID
            if len(userID) == 0:
                EMSG = "ETX user id is invalid.\n"
                return EMSG

            etxgroup = self._config['ETX']['DEFAULT_GROUP']                     
            groupID = self._etxGroups[etxgroup]['id']
            ret = self.addETXUserIntoGroup(userID, groupID)
            if not ret:
                EMSG += f'Failed to add ETX profile for {user} .\n'             

        except Exception as e:
            logging.error(f"Add ETX User profile failed. error: {str(e)}, stack: {traceback.format_exc()}"
            EMSG += "Add ETX User profile failed.\n"
        return EMSG

到了这里,关于自动化创建ETX用户帐号的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《编程菜鸟学 Python 数据分析》让工作自动化起来!

    随着我国企业数字化和信息化的深入,企业对办公自动化的效率和灵活性要求越来越高。Python作为一种开源的软件应用开发方式,通过提供强大丰富的库文件包,极大地简化了应用开发过程,降低了技术门槛。Python开发有哪些优势、挑战以及实践方法呢? 在我们的日常工作中

    2024年04月09日
    浏览(48)
  • Python操作Word:轻松实现文档的创建、编辑与自动化处理

    引言: 在日常工作和学习中,我们经常需要使用Microsoft Word来创建、编辑和处理文档。然而,手动操作Word可能会耗费大量的时间和精力。为了提高工作效率,我们可以使用Python编程语言来操作Word文档,实现文档的自动化处理。本文将详细介绍如何使用Python操作Word,包括创建

    2024年01月21日
    浏览(50)
  • Python+requests+pytest+allure封装接口自动化1-项目结构目录创建,requests库封装

    api: 这是一个package,用来各个接口的类封装,按照你的业务可以将其分为多个package common: 这是一个package,用来封装底层公共方法,比如requests库封装、文件操作封 装、加解密封装、redis封装、数据库封装、随机数据封装、日志封装 testcases: 这是一个package,用来编写封装我们

    2024年02月12日
    浏览(60)
  • 用Python创建轻量级Excel到Markdown转换工具:简便、高效、自动化【第28篇—python:Excel到Markdown】

    在工作中,我们常常需要将 Excel 表格转换为 Markdown 格式,以便在文档、博客或其他支持 Markdown 的平台上分享。然而,一些 Markdown 编辑器对从 Excel 复制粘贴的内容支持并不理想,导致转换后的格式混乱。另外,如果需要频繁处理相同类型的文件,手动转换显得繁琐。因此,

    2024年01月17日
    浏览(59)
  • 用户管理系统-自动化测试

    创建 Maven 项目 在 test 包下编写相关测试代码 导入自动化测试需要的相关依赖 在 pom.xml 中引入自动化测试相关依赖: 在 common 包下创建 AutoTestUtils 类,该类需要提供以下功能: 创建驱动对象,提供给页面使用。 创建隐式等待,作用于驱动对象的整个生命周期。 提供屏幕截图

    2023年04月19日
    浏览(42)
  • selenium自动化发送dy私信并关注用户

    通过界面跑自动化,从视频中的评论区取用户,给抖音用户发送私信并关注用户 一、打开网页并登陆抖音 挑选一个需要使用视频的用户,在该用户的视频评论里面关注其他用户,打开该用户的主页 用户主页访问后,会自动出现登陆的窗口,这里设置了等待时间,用于人工登

    2024年02月01日
    浏览(31)
  • 自动化测试平台(三):用户token验证及用户增删改查接口开发

    上一篇我们实现了用户登录的验证并返回token。那如何去校验请求的token是否有效呢?这篇内容为你讲解token的验证及用户管理(增删改查)的功能。 完整教程地址:《从0搭建自动化测试平台》 项目在线演示地址:http://121.43.43.59/ (帐号:admin 密码:123456)

    2024年02月03日
    浏览(71)
  • Apikit 自学日记:创建自动化测试项目

    在API 自动化测试中,所有的测试用例都是以项目维度来进行管理,一个自动化测试项目可以从多个API文档项目中引用API信息来创建API测试用例。 点击左侧菜单栏,进入 API 自动化测试 项目列表页,点击添加按钮:   在弹窗中输入相应的信息,点击确定即可:   在创建项目时

    2024年02月12日
    浏览(44)
  • 通过dockerfile创建jar镜像 + 自动化脚本启动

    dockerFile(里面包含向容器添加文件,创建文件夹,启动命令等关键,可以根据实际灵活运用):  文件位置:    命令流程:  可根据项目进行微调  遇到坑: linux下执行shell脚本报错,大概率是文本在win下编辑复制过去的,由于存在linux不支持的换行符等,导致脚本无法执

    2024年02月07日
    浏览(50)
  • ChatGPT人工智能自动化编程应用实践

    随着人工智能技术的发展,软件开发的需求和难度也不断增加。传统的软件开发方法,需要程序员编写大量的代码,耗时耗力,而且容易出错。为了提高软件开发的效率和质量,人工智能生成代码(AIGC)技术应运而生。AIGC技术利用人工智能模型,根据用户的需求或示例,自

    2024年02月04日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包