Utilice los scripts de PowerShell y Bash Shell de esta sección para usar el comando addUsers
de EPM Automate a fin de crear varios usuarios de Oracle Enterprise Performance Management Cloud, cada uno con su propia contraseña.
Si utiliza la versión en PDF de este documento: para evitar saltos de líneas e información de pie de página que inutilizarán estos scripts, cópielos de la Versión HTML de este tema.
Utilice los scripts de esta sección para completar las siguientes tareas:
Cargue un archivo CSV que contenga información de usuario en el entorno.
Cree usuarios en el dominio de identidad y asigne una contraseña única a cada usuario.
Suprima el archivo CSV cargado desde el entorno.
Nota:
Necesita tanto roles de administrador de servicio como de administrador de dominio de identidad para ejecutar este script.
Para crear varios usuarios, cada uno con una contraseña única:
Cree un archivo CSV que contenga información de usuario. El formato del archivo es el siguiente:
First Name,Last Name,Email,User Login,Password Jane,Doe,jane.doe@example.com,jdoe,P@ssword1 John,Doe,john.doe@example.com,john.doe@example.com,P@ssword2
Guarde el archivo (por ejemplo, como users.csv
) y almacénelo en el directorio donde almacena los archivos de script que se crearán en los siguientes pasos.
Copie el script de una de las siguientes secciones en un archivo y guárdelo; por ejemplo, como addusers.ps1
(Windows) o ./epmautomate/bin/addusers.sh
(Linux/UNIX).
Solo para Windows: cree un archivo por lotes denominado addusers.bat
copiando el siguiente script en un archivo. Guarde el archivo en el directorio donde está almacenado users.CSV
.
@echo off set paramRequiredMessage=Syntax: addusers.bat "FILENAME" "[resetPassword=true|false]" set adminusername="ADMIN_USER_NAME" set adminpassword="ADMIN_PASSWORD" set url="URL" set dirpath=%~dp0 echo %dirpath:~0,-1% cd %dirpath:~0,-1% set resetpassword=%~2 if "%~1" == "" ( echo File Name is missing. echo %paramRequiredMessage% exit /b 1 ) if "%resetpassword%" == "" ( set resetpassword="resetPassword=true" ) PowerShell.exe -File addusers.ps1 %~1 %resetpassword% %adminusername% %adminpassword% %url%
Modifique addusers.bat
(Windows) o addusers.sh
(Linux/UNIX) para definir los valores de los parámetros de la siguiente tabla.
Tabla 3-1 Valores de variable que se deben incluir en los scripts
Variable | Descripción |
---|---|
adminusername |
Nombre de usuario de un administrador del servicio que también tiene asignado el rol de administrador del dominio de identidad.
Ejemplos: Windows: Linux/UNIX: |
adminpassword |
Contraseña del administrador de servicio o ubicación del archivo de contraseña cifrado. Consulte el comando encrypt para obtener información sobre la creación de un archivo de contraseñas cifradas. Si la contraseña contiene caracteres especiales, consulte Manejo de caracteres especiales.
Ejemplos: Windows: Linux/UNIX: |
url |
URL del entorno de EPM Cloud.
Ejemplos: Windows: Linux/UNIX: |
Solo para addusers.sh
: asegúrese de que los siguientes valores se han definido correctamente para el sistema:
javahome
epmautomatescript.sh
mediante la actualización del valor de la directiva epmautomatescript
Ejecute addusers.bat
(que ejecuta addusers.ps1
) o addusers.sh
desde el directorio donde están almacenados los scripts. Ejecute el siguiente comando:
Windows: addusers.bat "fileName.csv" ["resetPassword=true|false"]
.
Linux/UNIX: ./addusers.sh "fileName.csv" ["resetPassword=true|false"]
, donde:
fileName.csv
es el nombre del archivo CSV que contiene información del usuario.
Solo para Windows: este parámetro y su valor se deben incluir entre comillas dobles.
resetpassword
es un parámetro opcional que indica si desea forzar a los usuarios a cambiar sus contraseñas tras el primer inicio de sesión. De forma predeterminada, se recomienda true
.
Solo para Windows: este parámetro y su valor se deben incluir entre comillas dobles.
Ejemplos:
Windows: addusers.bat "users.csv" "resetPassword=false"
Linux/UNIX: ./addusers.sh users.csv resetPassword=false
Script de PowerShell (adduser.ps1)
# Add users script $inputfile=$args[0] $resetpassword=$args[1] $adminusername=$args[2] $adminpassword=$args[3] $url=$args[4] # Generic variables $datedefaultformat=$(get-date) $global:addusersfile="addusers.csv" $logfile="addusers.log" function LogMessage { $message=$args[0] echo "$message" >> $logfile } function EchoAndLogMessage { $message=$args[0] echo "$message" echo "$message" >> $logfile } function Init { $logfileexists=Test-Path $logfile if ($logfileexists) { rm $logfile 2>&1 | out-null } if ($inputfile -eq $addusersfile) { $global:addusersfile="addusers-tmp.csv" } } function Coda { $addusersfileexists=Test-Path $addusersfile if ($addusersfileexists) { rm $addusersfile 2>&1 | out-null } } function ValidateInputFile { $inputfileheader=Get-Content $inputfile | Select -Index 0 $inputfilefirstrecord=Get-Content $inputfile | Select -Index 1 if ($inputfileheader -notlike "*First Name,Last Name,Email,User Login,Password*") { EchoAndLogMessage "File ${inputfile} does not contain correct header: `"First Name,Last Name,Email,User Login,Password`". Please correct before re-running script. Exiting." exit } $elements=$inputfilefirstrecord -split "," $firstname=$elements[0] $lastname=$elements[1] $email=$elements[2] $username=$elements[3] $password=$elements[4] if ([string]::IsNullOrEmpty($firstname)) { EchoAndLogMessage "The first record of file ${inputfile} contains an empty first name. Please correct before re-running script. Exiting." exit } elseif ([string]::IsNullOrEmpty($lastname)) { EchoAndLogMessage "The first record of file ${inputfile} contains an empty last name. Please correct before re-running script. Exiting." exit } elseif ([string]::IsNullOrEmpty($email)) { EchoAndLogMessage "The first record of file ${inputfile} contains an empty email address. Please correct before re-running script. Exiting." exit } elseif ([string]::IsNullOrEmpty($username)) { EchoAndLogMessage "The first record of file ${inputfile} contains an empty user login. Please correct before re-running script. Exiting." exit } elseif ([string]::IsNullOrEmpty($password)) { EchoAndLogMessage "The first record of file ${inputfile} contains an empty password. Please correct before re-running script. Exiting." exit } } function ValidateInput { $inputfileexists=Test-Path $inputfile if (!($inputfileexists)) { EchoAndLogMessage "Could not locate required file ${inputfile}" EchoAndLogMessage "Syntax: addusers.bat FILENAME [resetPassword=true|false]" EchoAndLogMessage "Exiting now." exit } ValidateInputFile } function ProcessCommand { $op=$args echo "EPM Automate operation: epmautomate.bat $op" >> $logfile epmautomate.bat $op >> $logfile 2>&1 if ($LASTEXITCODE -ne 0) { echo "EPM Automate operation failed: epmautomate.bat $op. See $logfile for details." } } function processInputFile { $infile=$args[0] EchoAndLogMessage "Running: EPMAutomate login ${adminusername} ${adminpassword} ${url}" ProcessCommand login ${adminusername} ${adminpassword} ${url} Get-Content $infile | ForEach-Object { $fullpath=$_.trim() $elements=$fullpath.split(',') $firstname=$elements[0] $lastname=$elements[1] $email=$elements[2] $username=$elements[3] $password=$elements[4] if ($firstname -eq "First Name") { return } else { EchoAndLogMessage "Creating add users file: ${addusersfile}" echo "First Name,Last Name,Email,User Login" > ${addusersfile} echo "${firstname},${lastname},${email},${username}" >> ${addusersfile} $txt = [io.file]::ReadAllText("$addusersfile") -replace "`r`n","`n" [io.file]::WriteAllText("$addusersfile", $txt) } LogMessage "Contents of add users file:" cat ${addusersfile} >> ${logfile} EchoAndLogMessage "Running: EPMAutomate uploadFile ${addusersfile}" ProcessCommand uploadFile ${addusersfile} EchoAndLogMessage "Running: EPMAutomate addUsers ${addusersfile} userPassword=${password} $resetPassword" ProcessCommand addUsers ${addusersfile} userPassword=${password} ${resetpassword} EchoAndLogMessage "Running: EPMAutomate deleteFile ${addusersfile}" ProcessCommand deleteFile ${addusersfile} } EchoAndLogMessage "Running: EPMAutomate logout" ProcessCommand logout } Init EchoAndLogMessage "$datedefaultformat" EchoAndLogMessage "Addusers script started" ValidateInput ProcessInputFile "${inputfile}" Coda EchoAndLogMessage "Addusers script completed" EchoAndLogMessage "$datedefaultformat"
Script de shell de Bash (addusers.sh)
#!/bin/sh inputfile=$1 resetpasswordvalue=$2 addusersfile="addusers.csv" logfile="addusers.log" # UPDATE VALUES FOR YOUR ENVIRONMENT javahome=/home/user1/jdk1.8.0_191 epmautomatescript=/home/user1/epmautomate/bin/epmautomate.sh adminusername=adminuser1 adminpassword=adminpassword1 url=https://planning-a12345.pbcs.us2.oraclecloud.com export JAVA_HOME=${javahome} init() { if [ -f "${logfile}" ] then rm ${logfile} fi if [ "${inputfile}" == "${addusersfile}" ] then addusersfile="addusers-tmp.csv" fi } coda() { if [ -f "${addusersfile}" ] then rm ${addusersfile} fi } validateInputFile() { local inputfileheader=$(head -n 1 ${inputfile}) local inputfilefirstrecord=$(head -n 2 ${inputfile} | tail -n 1) if [[ "${inputfileheader}" != *"First Name,Last Name,Email,User Login,Password"* ]] then echo "File ${inputfile} does not contain correct header: \"First Name,Last Name,Email,User Login,Password\". Please correct before re-running script. Exiting." | tee -a ${logfile} exit fi local firstname=$(echo "${inputfilefirstrecord}" | cut -d',' -f1) local lastname=$(echo "${inputfilefirstrecord}" | cut -d',' -f2) local email=$(echo "${inputfilefirstrecord}" | cut -d',' -f3) local userlogin=$(echo "${inputfilefirstrecord}" | cut -d',' -f4) local password=$(echo "${inputfilefirstrecord}" | cut -d',' -f5) if [[ "${firstname}" == "" ]] then echo "The first record of file ${inputfile} contains an empty first name. Please correct before re-running script. Exiting." | tee -a ${logfile} exit elif [[ "${lastname}" == "" ]] then echo "The first record of file ${inputfile} contains an empty last name. Please correct before re-running script. Exiting." | tee -a ${logfile} exit elif [[ "${email}" == "" ]] then echo "The first record of file ${inputfile} contains an empty email address. Please correct before re-running script. Exiting." | tee -a ${logfile} exit elif [[ "${userlogin}" == "" ]] then echo "The first record of file ${inputfile} contains an empty user login. Please correct before re-running script. Exiting." | tee -a ${logfile} exit elif [[ "${password}" == "" ]] then echo "The first record of file ${inputfile} contains an empty password. Please correct before re-running script. Exiting." | tee -a ${logfile} exit fi } validateInput() { if [ ! -f "${inputfile}" ] then echo "Could not locate required file ${inputfile}" | tee -a ${logfile} echo "Syntax: addusers.sh FILENAME [resetPassword=true|false]" | tee -a ${logfile} echo "Exiting now." | tee -a ${logfile} exit fi if [ ! -z "$(tail -c 1 "${inputfile}")" ] then echo "No newline found at end of file ${inputfile}. Adding newline to end of file." >> ${logfile} echo "" >> ${inputfile} fi validateInputFile if [[ "${resetpasswordvalue}" != "" ]] then resetpasswordvalue=$(echo "${resetpasswordvalue}" | cut -d'=' -f2) else resetpasswordvalue="true" fi } processInputFile() { echo "Running: EPMAutomate login ${adminusername} ${adminpassword} ${url}" | tee -a ${logfile} ${epmautomatescript} login ${adminusername} ${adminpassword} ${url} >> ${logfile} while read line do firstname=$(echo "${line}" | cut -d',' -f1) lastname=$(echo "${line}" | cut -d',' -f2) email=$(echo "${line}" | cut -d',' -f3) username=$(echo "${line}" | cut -d',' -f4) password=$(echo "${line}" | cut -d',' -f5) if [[ "${firstname}" != "First Name" ]] then echo "Creating add users file: ${addusersfile}" | tee -a ${logfile} echo "First Name,Last Name,Email,User Login" > ${addusersfile} echo "${firstname},${lastname},${email},${username}" >> ${addusersfile} else continue fi echo "Contents of add users file:" >> ${logfile} cat ${addusersfile} >> ${logfile} echo "Running: EPMAutomate uploadFile ${addusersfile}" | tee -a ${logfile} ${epmautomatescript} uploadFile ${addusersfile} >> ${logfile} echo "Running: EPMAutomate addUsers ${addusersfile} userPassword=${password} resetPassword=${resetpasswordvalue}" | tee -a ${logfile} ${epmautomatescript} addUsers ${addusersfile} userPassword=${password} resetPassword=${resetpasswordvalue} >> ${logfile} echo "Running: EPMAutomate deleteFile ${addusersfile}" | tee -a ${logfile} ${epmautomatescript} deleteFile ${addusersfile} >> ${logfile} done < ${inputfile} echo "Running: EPMAutomate logout" | tee -a ${logfile} ${epmautomatescript} logout >> ${logfile} } init date | tee ${logfile} echo "Addusers script started" | tee -a ${logfile} validateInput processInputFile "${inputfile}" coda echo "Addusers script completed" | tee -a ${logfile} date | tee -a ${logfile}