Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the header-footer-elementor domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/html/abartomeu/wp-includes/functions.php on line 6121
Script ldap shell -

Reloj
00:00:00

Script ldap shell

#!/bin/bash
# Definició de variables de configuració LDAP

domini_ldap=”dc=ldap,dc=grup1,dc=local”
admin_ldap=”cn=admin,dc=ldap,dc=grup1,dc=local”
contrasenya_ldap=”ldapgrup1″

# Funció per mostrar l’ús del script

usage() {
echo “Ús: $0 -a [nom_usuari] -b [grups] -c [ou]”
echo “Opcions:”
echo ” -a: Nom de l’usuari”
echo ” -b: Grups als quals pertanyerà l’usuari (separats per comes)”
echo ” -c: Unitat Organitzativa (OU) on es crearà l’usuari”
echo ” -l: Llistar OUs i grups disponibles”
exit 1
}

# Funció per llistar les OUs disponibles al directori LDAP

llistar_ous_jerarquicament() {
echo “Unitats Organitzatives (OUs) disponibles:”
ldapsearch -x -b “$domini_ldap” “(objectClass=organizationalUnit)” ou | grep “ou:” | awk ‘{print $2}’ | while read -r OU; do
OU_PARE=$(ldapsearch -x -b “$domini_ldap” “(ou=$OU)” | grep “dn:” | awk -F’,’ ‘{print $2}’ | awk -F’=’ ‘{print $2}’)
if [[ -n “$OU_PARE” ]]; then
echo ” $OU (dins de $OU_PARE)”
else
echo “$OU”
fi
done
}

# Funció per llistar els grups disponibles al LDAP

llistar_grups() {
echo “Grups disponibles:”
ldapsearch -x -b “$domini_ldap” “(objectClass=posixGroup)” cn | grep “cn:” | awk ‘{print $2}’
}

# Funció per mostrar tant OUs com grups

llistar_ous_i_grups() {
llistar_ous_jerarquicament
echo
llistar_grups
}

# Processament dels arguments

while getopts “:a:b:c:l” opt; do
case ${opt} in
a) nom_usuari=$OPTARG ;;
b) grups=$OPTARG ;;
c) ou=$OPTARG ;;
l) llistar_ous_i_grups; exit 0 ;;
*) usage ;;
esac
done

# Comprova si falten arguments obligatoris

if [[ -z “$nom_usuari” || -z “$grups” || -z “$ou” ]]; then
usage
fi

# Comprova si l’usuari ja existeix al LDAP

if ldapsearch -x -b “ou=$ou,$domini_ldap” “(uid=$nom_usuari)” | grep -q “dn:”; then
echo “Error: L’usuari ‘$nom_usuari’ ja existeix al LDAP.”
exit 1
fi

# Divideix els grups separats per comes en un array

IFS=’,’ read -r -a grups_array <<< “$grups”

# Comprova si cada grup existeix al LDAP

for grup in “${grups_array[@]}”; do
if ! ldapsearch -x -b “$domini_ldap” “(cn=$grup)” | grep -q “dn:”; then
echo “Error: El grup ‘$grup’ no existeix al LDAP.”
exit 1
fi
done

# Comprova si la Unitat Organitzativa (OU) existeix

if ! ldapsearch -x -b “ou=$ou,$domini_ldap” “(objectClass=organizationalUnit)” | grep -q “dn:”; then
echo “Error: La OU ‘$ou’ no existeix al LDAP.”
exit 1
fi

# Crea un fitxer LDIF temporal per afegir l’usuari

fitxer_ldif=$(mktemp)
cat << EOF > $fitxer_ldif
dn: uid=$nom_usuari,ou=$ou,$domini_ldap
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: $nom_usuari
sn: $nom_usuari
uid: $nom_usuari
uidNumber: $(ldapsearch -x -b “ou=$ou,$domini_ldap” “(uidNumber=*)” uidNumber | awk ‘/uidNumber:/ {print $2}’ | sort -n | tail -1 | awk ‘{print $1 + 1}’)
gidNumber: $(ldapsearch -x -b “$domini_ldap” “(cn=${grups_array[0]})” gidNumber | awk ‘/gidNumber:/ {print $2}’)
homeDirectory: /home/$nom_usuari
loginShell: /bin/bash
userPassword: $(slappasswd -s “password” 2>/dev/null || echo “password”)
EOF

# Afegeix l’usuari al directori LDAP

ldapadd -x -D “$admin_ldap” -w “$contrasenya_ldap” -f $fitxer_ldif

# Assigna l’usuari als grups

for grup in “${grups_array[@]}”; do
fitxer_grup_ldif=$(mktemp)
cat << EOF > $fitxer_grup_ldif
dn: cn=$grup,ou=${grup},$domini_ldap
changetype: modify
add: memberUid
memberUid: $nom_usuari
EOF
ldapmodify -x -D “$admin_ldap” -w “$contrasenya_ldap” -f $fitxer_grup_ldif
rm $fitxer_grup_ldif
done

# Esborra el fitxer temporal

rm $fitxer_ldif

echo “Usuari ‘$nom_usuari’ creat amb èxit a la OU ‘$ou’ i afegit als grups: $grups.”

Leave a Comment