Utilisez les scripts de cette section pour cloner les affectations de rôle prédéfini d'un environnement dans un autre. Pour exécuter ces scripts, l'utilisateur doit posséder le rôle Administrateur de service dans les deux environnements.
Remarque :
Si vous utilisez la version PDF de ce document : pour éviter les retours à la ligne et les informations de pied de page qui rendent ces scripts inutilisables, copiez-les à partir de la version HTML de cette rubrique.Windows
replicatepredefineroles.ps1 en copiant le script suivant.
# Replicate predefined roles script
param(
[string]$epmusersource,
[string]$epmpwdsource,
[string]$epmurlsource,
[string]$epmidentitydomainsource,
[string]$epmusertarget,
[string]$epmpwdtarget,
[string]$epmurltarget,
[string]$epmidentitydomaintarget,
[string]$proxyserverusername,
[string]$proxyserverpassword,
[string]$proxyserverdomain,
[string]$emailtoaddress
)
$roleassignmentreport="roleassignmentreport.csv"
function replicateroles
{
# epmautomate login Source App as an IDM Admin
echo "Logging into source application at ${epmurlsource}"
epmautomate login ${epmusersource} ${epmpwdsource} ${epmurlsource} ${epmidentitydomainsource} ${proxyserverusername} ${proxyserverpassword} ${proxyserverdomain}
echo "Creating role assignment report: ${roleassignmentreport}"
epmautomate roleAssignmentReport ${roleassignmentreport}
if (${emailtoaddress} -match "@") {
epmautomate.bat sendMail $emailtoaddress "Role assignment report" Body="Role assignment report is attached." Attachments=$roleassignmentreport
}
echo "Downloading role assignment report"
epmautomate downloadfile ${roleassignmentreport}
epmautomate deletefile ${roleassignmentreport}
epmautomate logout
echo "Creating files to use with epmautomate assignRoles"
Get-Content ${roleassignmentreport} | ForEach-Object {
$user=$_.split(',')[0]
$rolename=$_.split(',')[4]
if ($rolename -like '*User' -And $rolename -notlike '*Power User') {
$rolenamearray=$rolename.split(" ")
$arraysize=$rolenamearray.count
$rolename="User"
if ($arraysize.count -le 2) {
echo "${user}" | Out-File -Append -Encoding "UTF8" "role-${rolename}.csv"
}
}
elseif ($rolename -like '*Viewer') {
$rolenamearray=$rolename.split(" ")
$arraysize=$rolenamearray.count
$rolename="Viewer"
if ($arraysize -le 2) {
echo "${user}" | Out-File -Append -Encoding "UTF8" "role-${rolename}.csv"
}
}
elseif ($rolename -like '*Power User') {
$rolenamearray=$rolename.split(" ")
$arraysize=$rolenamearray.count
$rolename="Power User"
if ($arraysize -le 3) {
echo "${user}" | Out-File -Append -Encoding "UTF8" "role-${rolename}.csv"
}
}
elseif ($rolename -like '*Service Administrator') {
$rolenamearray=$rolename.split(" ")
$arraysize=$rolenamearray.count
$rolename="Service Administrator"
if ($arraysize -le 3) {
echo "${user}" | Out-File -Append -Encoding "UTF8" "role-${rolename}.csv"
}
}
elseif ($rolename -like 'Planner') {
echo "${user}" | Out-File -Append -Encoding "UTF8" "role-User.csv"
}
}
# Add header and format
$rolefiles = Get-ChildItem "role-*.csv"
foreach ($rolefile in $rolefiles) {
$rolefilecontent = Get-Content "$rolefile"
$headerline='User Login'
Set-Content $rolefile -value $headerline,$rolefilecontent
$txt = [io.file]::ReadAllText("$rolefile") -replace "`r`n","`n"
[io.file]::WriteAllText("$rolefile", $txt)
}
# epmautomate login Target App as an IDM Admin
echo "Logging into target application at ${epmurltarget}"
epmautomate login ${epmusertarget} ${epmpwdtarget} ${epmurltarget} ${epmidentitydomaintarget} ${proxyserverusername} ${proxyserverpassword} ${proxyserverdomain}
$rolefiles = Get-ChildItem "role-*.csv"
foreach ($rolefile in $rolefiles) {
$rolenamecsv=$rolefile.BaseName.split('-')[1]
$rolename=$rolenamecsv.split('.')[0]
epmautomate deletefile "${rolefile}" | Out-Null
echo "Uploading file ${rolefile}"
epmautomate uploadfile "${rolefile}"
echo "Assigning ${rolename} roles"
epmautomate assignRole "role-${rolename}.csv" "${rolename}"
epmautomate deletefile "role-${rolename}.csv"
}
epmautomate logout
rm deletefile*.log | Out-Null
}
function init
{
# delete ${role}.csv files
$rolefiles = Get-ChildItem "role-*.csv"
foreach ($rolefile in $rolefiles) {
$rolefileexists=Test-Path $rolefile
if ($rolefileexists) {
rm "${rolefile}"
}
}
}
echo "Replicate predefined roles script started"
init
replicateroles
echo "Replicate predefined roles script completed"
replicatepredefineroles.bat en copiant le script suivant.
@ECHO OFF SET thisdir=%~dp0 SET scriptpath=%thisdir%replicatepredefinedroles.ps1 REM USER DEFINED VARIABLES REM ----------------------- set epmusersource="<EPM USER FOR SOURCE ENVIRONMENT>" set epmpwdsource="<EPM PASSWORD FOR SOURCE ENVIRONMENT>" set epmurlsource="<EPM URL FOR SOURCE ENVIRONMENT>" set epmidentitydomainsource="<EPM IDENTITY DOMAIN FOR SOURCE ENVIRONMENT>" set epmusertarget="<EPM USER FOR TARGET ENVIRONMENT>" set epmpwdtarget="<EPM PASSWORD FOR TARGET ENVIRONMENT>" set epmurltarget="<EPM URL FOR TARGET ENVIRONMENT>" set epmidentitydomaintarget="<EPM IDENTITY DOMAIN FOR TARGET ENVIRONMENT>" set proxyserverusername="<PROXY SERVER USER NAME>" set proxyserverpassword="<PROXY SERVER PASSWORD>" set proxyserverdomain="<PROXY SERVER DOMAIN>" set emailtoaddress="<EMAIL_TO_ADDRESS>" REM ----------------------- PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& '%scriptpath%' -epmusersource '%epmusersource%' -epmpwdsource '%epmpwdsource%' -epmurlsource '%epmurlsource%' -epmidentitydomainsource '%epmidentitydomainsource%' -epmusertarget '%epmusertarget%' -epmpwdtarget '%epmpwdtarget%' -epmurltarget '%epmurltarget%' -epmidentitydomaintarget '%epmidentitydomaintarget%' -proxyserverusername '%proxyserverusername%' -proxyserverpassword '%proxyserverpassword%' -proxyserverdomain '%proxyserverdomain%' -emailtoaddress '%emailtoaddress%'"
replicatepredefineroles.bat, si nécessaire. Reportez-vous au tableau suivant afin d'obtenir des informations sur les valeurs à définir pour les propriétés de ce fichier.
Mise à jour de replicatepredefineroles.bat
| Paramètre | Description |
|---|---|
epmusersource |
Nom de l'utilisateur doté des rôles Administrateur de domaine d'identité et Administrateur de service dans l'environnement source.
Exemples : Windows : Linux/UNIX : |
epmpwdsource |
Mot de passe de l'utilisateur ou chemin absolu du fichier de mots de passe crypté.
Exemples : Windows : Linux/UNIX : |
epmurlsource |
URL de l'environnement à partir duquel les utilisateurs doivent être copiés.
Exemples : Windows : Linux/UNIX : |
epmidentitydomainsource |
Nom du domaine d'identité utilisé par l'environnement source.
Exemples : Windows : Linux/UNIX : |
epmusertarget |
Nom de l'utilisateur doté des rôles Administrateur de domaine d'identité et Administrateur de service dans l'environnement cible.
Exemples : Windows : Linux/UNIX : |
epmpwdtarget |
Mot de passe de l'utilisateur ou chemin absolu du fichier de mots de passe crypté.
Exemples : Windows : Linux/UNIX : |
epmurltarget |
URL de l'environnement dans lequel les utilisateurs doivent être créés.
Exemples : Windows : Linux/UNIX : |
epmidentitydomaintarget |
Nom du domaine d'identité utilisé par l'environnement cible.
Exemples : Windows : Linux/UNIX : |
proxyserverusername |
Nom d'utilisateur permettant d'authentifier une session sécurisée avec le serveur proxy qui contrôle l'accès à Internet. Supprime toutes les occurrences de cette propriété si elle n'est pas utilisée.
Exemples : Windows : Linux/UNIX : |
proxyserverpassword |
Mot de passe pour l'authentification de l'utilisateur auprès du serveur proxy. Supprime toutes les occurrences de cette propriété si elle n'est pas utilisée.
Exemples : Windows : Linux/UNIX : |
proxyserverdomain |
Nom du domaine défini pour le serveur proxy. Supprime toutes les occurrences de cette propriété si elle n'est pas utilisée.
Exemples : Windows : Linux/UNIX : |
emailtoaddress |
(Facultatif) Adresse électronique à laquelle le rapport sur l'affectation de rôle doit être envoyé. Le rapport n'est envoyé par courriel que si cette valeur est indiquée.
Exemple : |
Linux/UNIX
replicatepredefineroles.sh en copiant le script suivant.
#!/bin/sh
# USER DEFINED VARIABLES
#-----------------------
javahome="<JAVA HOME>"
epmautomatescript="<EPM AUTOMATE SCRIPT LOCATION>"
epmusersource="<EPM USER FOR SOURCE ENVIRONMENT>"
epmpwdsource="<EPM PASSWORD FOR SOURCE ENVIRONMENT>"
epmurlsource="<EPM URL FOR SOURCE ENVIRONMENT>"
epmidentitydomainsource="<EPM IDENTITY DOMAIN FOR SOURCE ENVIRONMENT>"
epmusertarget="<EPM USER FOR TARGET ENVIRONMENT>"
epmpwdtarget="<EPM PASSWORD FOR TARGET ENVIRONMENT>"
epmurltarget="<EPM URL FOR TARGET ENVIRONMENT>"
epmidentitydomaintarget="<EPM IDENTITY DOMAIN FOR TARGET ENVIRONMENT>"
proxyserverusername="<PROXY SERVER USER NAME>"
proxyserverpassword="<PROXY SERVER PASSWORD>"
proxyserverdomain="<PROXY SERVER DOMAIN>"
emailtoaddress="<EMAIL TO ADDRESS>"
#-----------------------
roleassignmentreport="roleassignmentreport.csv"
export JAVA_HOME=${javahome}
replicateroles()
{
# epmautomate login Source App as an DM Admin
echo "Logging into source application at ${epmurlsource}"
${epmautomatescript} login ${epmusersource} ${epmpwdsource} ${epmurlsource} ${epmidentitydomainsource} ${proxyserverusername} ${proxyserverpassword} ${proxyserverdomain}
echo "Creating role assignment report: ${roleassignmentreport}"
${epmautomatescript} roleAssignmentReport ${roleassignmentreport}
if [[ "${emailtoaddress}" == *"@"* ]]
then
${epmautomatescript} sendMail $emailtoaddress "Role assignment report" Body="Role assignment report is attached." Attachments=$roleassignmentreport
fi
echo "Downloading role assignment report"
${epmautomatescript} downloadfile ${roleassignmentreport}
${epmautomatescript} deletefile ${roleassignmentreport}
${epmautomatescript} logout
echo "Creating files to use with epmautomate assignRoles"
while read line
do
user=$(echo "${line}" | cut -d',' -f1)
rolename=$(echo "${line}" | cut -d',' -f5)
if [[ "$rolename" == *"User" ]] && [[ "$rolename" != "*Power User" ]]
then
count=$(echo "${rolename}" | wc -w);
rolename="User"
if [[ $count -le 2 ]]
then
echo "${user}" >> "role-${rolename}.csv"
fi
elif [[ "$rolename" == *"Viewer" ]]
then
count=$(echo "${rolename}" | wc -w);
rolename="Viewer"
if [[ $count -le 2 ]]
then
echo "${user}" >> "role-${rolename}.csv"
fi
elif [[ "$rolename" == *"Power User" ]]
then
count=$(echo "${rolename}" | wc -w);
rolename="Power User"
if [[ $count -le 3 ]]
then
echo "${user}" >> "role-${rolename}.csv"
fi
elif [[ "$rolename" == *"Service Administrator" ]]
then
count=$(echo "${rolename}" | wc -w);
rolename="Service Administrator"
if [[ $count -le 3 ]]
then
echo "${user}" >> "role-${rolename}.csv"
fi
elif [[ "$rolename" == "Planner" ]]
then
echo "${user}" >> "role-User.csv"
fi
done < ${roleassignmentreport}
# write header line
for f in role-*.csv
do
sed -i '1iUser Login' "$f"
done
# epmautomate login Target App as an IDM Admin
echo "Logging into target application at ${epmurltarget}"
${epmautomatescript} login ${epmusertarget} ${epmpwdtarget} ${epmurltarget} ${epmidentitydomaintarget} ${proxyserverusername} ${proxyserverpassword} ${proxyserverdomain}
for rolefile in role-*.csv
do
rolenamecsv=$(echo "$rolefile" | cut -d'-' -f2)
rolename=$(echo "$rolenamecsv" | cut -d'.' -f1)
${epmautomatescript} deletefile "${rolefile}" > /dev/null 2>&1
echo "Uploading file ${rolefile}"
${epmautomatescript} uploadfile "${rolefile}"
echo "Assigning roles"
${epmautomatescript} assignrole "${rolefile}" "${rolename}"
${epmautomatescript} deletefile "${rolefile}"
done
${epmautomatescript} logout
rm deletefile*.log > /dev/null 2>&1
}
init()
{
# delete role-${role}.csv files
for f in role-*.csv
do
rm "$f" > /dev/null 2>&1
done
}
echo "Replicate predefined roles script started"
init
replicateroles
echo "Replicate predefined roles script completed"
replicatepredefineroles.sh. Reportez-vous au tableau précédent pour obtenir plus d'informations sur les valeurs à indiquer. Vous pouvez également indiquer les valeurs pour ces propriétés :
javahome : chemin absolu du répertoire dans lequel Java est installé.epmautomatescript : emplacement d'epmautomatescript.sh. Par exemple : epmautomatescript="/home/user1/epmautomate/bin/epmautomate.sh"