Files
openGauss-OM/script/domain_utils/security/random_value.py
coolany eae422baf3 适配CM组件
Signed-off-by: coolany <kyosang@163.com>

support cgroup

追加合入
2022-03-05 18:51:52 +08:00

67 lines
2.7 KiB
Python

# -*- coding:utf-8 -*-
#############################################################################
# Copyright (c) 2020 Huawei Technologies Co.,Ltd.
#
# openGauss is licensed under Mulan PSL v2.
# You can use this software according to the terms
# and conditions of the Mulan PSL v2.
# You may obtain a copy of Mulan PSL v2 at:
#
# http://license.coscl.org.cn/MulanPSL2
#
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
#############################################################################
from gspylib.common.ErrorCode import ErrorCode
from base_utils.executor.cmd_executor import CmdExecutor
class RandomValue:
"""manage random value."""
# random passwd len
RANDOM_PASSWD_LEN = 12
@staticmethod
def getRandStr():
"""
function: get random passwd
input: NA
output: passwd
"""
uppercmd = 'openssl rand -base64 12 | tr "[0-9][a-z]" "[A-Z]" | tr -d [/+=] |cut -c 1-3'
lowercmd = 'openssl rand -base64 12 | tr "[0-9][A-Z]" "[a-z]" | tr -d [/+=] |cut -c 1-4'
numcmd = 'openssl rand -base64 12 | md5sum | tr "[a-z]" "[0-9]" |cut -c 1-3'
strcmd = 'openssl rand -base64 48 | tr "[0-9][a-z][A-Z]" "[~@_#*]" | tr -d [/+=] ' \
'|cut -c 1-1'
_, upperoutput, _ = CmdExecutor.execCommandWithSubprocess(uppercmd)
_, loweroutput, _ = CmdExecutor.execCommandWithSubprocess(lowercmd)
_, numoutput, _ = CmdExecutor.execCommandWithSubprocess(numcmd)
_, stroutput, _ = CmdExecutor.execCommandWithSubprocess(strcmd)
ranpwd = 'G' + upperoutput.strip() + loweroutput.strip() + \
numoutput.strip() + stroutput.strip()
if len(ranpwd) == RandomValue.RANDOM_PASSWD_LEN:
return ranpwd
ranpwd = "G"
cmd_tuple = (uppercmd, lowercmd, numcmd, strcmd)
out_tuple = (upperoutput.strip(), loweroutput.strip(),
numoutput.strip(), stroutput.strip())
str_len = (3, 4, 3, 1)
for i in range(4):
if len(out_tuple[i]) != str_len[i]:
count = 0
while True:
count += 1
_, output, _ = CmdExecutor.execCommandWithSubprocess(cmd_tuple[i])
if len(output.strip()) == str_len[i]:
ranpwd += output.strip()
break
if count > 100:
raise Exception(ErrorCode.GAUSS_514["GAUSS_51402"] + cmd_tuple[i])
else:
ranpwd += out_tuple[i].strip()
return ranpwd