67 lines
2.7 KiB
Python
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
|