[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 #!/bin/bash 2 ##### Enregistrement ldap des cn=machine ##### 3 # ce script s'utilise en lieu et place du script connexion.pl qu'il remplace 4 # licence GPL 5 # auteur : denis bonnenfant 6/02/2008 6 ## 7 # $Id: ip-internet.sh 6115 2011-01-28 18:34:52Z dbo $ ## 8 if [ "$1" == "--help" -o "$1" == "-h" ] 9 then 10 echo "Script de cr�ant l'enregistrement ldap cn=machine " 11 echo "afin de permettre le controle internet et la gestin des parcs" 12 echo "Usage : connexion-internet.sh utilisateur machine IP action" 13 echo "action peut �tre : add - ajoute l'ip (choix par defaut)" 14 echo " del - supprime l'ip" 15 echo "--help cette aide" 16 exit 17 fi 18 19 [[ "$#" -lt "3" ]] && exit 1 20 21 user=$1 22 machine=$2 23 adresse=$3 24 case $4 in 25 del) action="del" ;; 26 *) action="add" ;; 27 esac 28 29 # recup parametres ldap 30 . /etc/se3/config_l.cache.sh 31 . /usr/share/se3/shares/shares.avail/connexion.sh $user $machine $adresse 32 # On cherche la machine 33 res=$(ldapsearch -xLLL -D $adminRdn,$ldap_base_dn -w $adminPw -b $computersRdn,$ldap_base_dn "(&(objectClass=ipHost)(cn=$machine))" | grep "ipHostNumber:\|destinationIndicator:\|manager:\|macAddress:") 34 # On cherche l'utilisateur 35 resu=$(ldapsearch -xLLL -D $adminRdn,$ldap_base_dn -w $adminPw -b $peopleRdn,$ldap_base_dn "(uid=$user)" | grep "destinationIndicator:" | cut -d " " -f2) 36 droit_u_p=$(echo $resu |cut -d ":" -f1) 37 droit_u_t=$(echo $resu |cut -d ":" -f2) 38 plage_u=$(echo $resu |cut -d ":" -f3) 39 # on cherche le(s) parc(s) pour savoir si c'est un portable 40 resp=$(ldapsearch -xLLL -D $adminRdn,$ldap_base_dn -w $adminPw -b $parcsRdn,$ldap_base_dn "(member=cn=$machine,$computersRdn,$ldap_base_dn)" cn | grep "cn: portables_*" | cut -d " " -f2) 41 ldif="dn: cn=$machine,$computersRdn,$ldap_base_dn" 42 if [ -z "$res" ]; then 43 # impossible : 44 exit 1 45 else 46 ldif="$ldif}\nchangetype: modify" 47 ip=$(echo "$res" | grep ipHostNumber: | cut -d " " -f2) 48 if [ -z "$(echo $ip | grep $adresse)" ] ; then 49 ldif="$ldif}\nadd: ipHostNumber" 50 ldif="$ldif}\nipHostNumber: $adresse" 51 ldif="$ldif}\n-" 52 modif="1" 53 fi 54 if [[ "$action" == "del" ]]; then 55 if [ ! -z "$(echo $ip | sed s/$adresse//)" ] ; then 56 ldif="$ldif}\ndelete: ipHostNumber" 57 ldif="$ldif}\nipHostNumber: $adresse" 58 ldif="$ldif}\n-" 59 modif="1" 60 fi 61 fi 62 userdn=$(echo "$res" | grep manager: | cut -d " " -f2) 63 if [ -z "$userdn" ]; then 64 ldif="$ldif}\nadd: manager" 65 ldif="$ldif}\nmanager: uid=$user,$peopleRdn,$ldap_base_dn" 66 ldif="$ldif}\n-" 67 modif="1" 68 elif [ "$userdn" != "uid=$user,$peopleRdn,$ldap_base_dn" -a -z "$resp" ]; then 69 ldif="$ldif}\nreplace: manager" 70 ldif="$ldif}\nmanager: uid=$user,$peopleRdn,$ldap_base_dn" 71 ldif="$ldif}\n-" 72 modif="1" 73 fi 74 droit_m=$(echo "$res" | grep -i destinationIndicator: | cut -d " " -f2) 75 droit_m_p=$(echo "$droit_m" |cut -d ":" -f1) 76 droit_m_t=$(echo "$droit_m" |cut -d ":" -f2) 77 plage_m=$(echo "$droit_m" |cut -d ":" -f3) 78 79 # mise a jour des droits pour le controle d'acces internet 80 81 # les droits sont : pour les utilisateurs : 82 # - eleve|prof|administratif|admin : droits permanents 83 # - aucun|intranet|internet-cours|internet-pause|internet-soir|internet : droits temporaires 84 # - cours[1-9]|tous 85 86 # les droits sont : pour les machines : 87 # - intranet|internet-cours|internet-pause|internet-soir|internet|total : droits permanents 88 # - aucun|intranet|internet-cours|internet-pause|internet-soir|internet|total : droits temporaires (utilises par squidGuard) 89 # - cours[1-9]|tous 90 91 if [ -z "$droit_u_p" ]; then droit_u_p="eleve"; fi 92 if [ -z "$droit_u_t" ]; then droit_u_t="aucun"; fi 93 if [ -z "$droit_m_p" ]; then droit_m_p="intranet"; fi 94 if [ -z "$droit_m_t" ]; then droit_m_t="intranet"; fi 95 if [ -z "$plage_u" ]; then plage_u="tous"; fi 96 if [ -z "$plage_m" ]; then plage_m="tous"; fi 97 98 case $droit_u_p in 99 eleve) # eleve 100 case $droit_u_t in 101 aucun) # pas d'acces (puni ou charte non signee) 102 droit_m_t="aucun" 103 plage_m="tous" 104 ;; 105 intranet) # acces par defaut (droits de la machine) 106 droit_m_t=$droit_m_p 107 plage_m="tous" 108 ;; 109 internet-cours|internet-pause|internet-soir|internet) # acces force par profs pour une duree donnee 110 droit_m_t=$droit_u_t 111 plage_m=$plage_u 112 ;; 113 esac 114 ;; 115 prof|administratif) # prof 116 droit_m_t="internet" 117 plage_m="tous" 118 ;; # pas de limites 119 admin) # administrateur (non filtre et prioritaire) 120 droit_m_t="total" 121 plage_m="tous" 122 ;; # pas de limites 123 esac 124 droit="$droit_m_p:$droit_m_t:$plage_m" 125 if [ "$droit_m" != "$droit" ]; then 126 ldif="$ldif}\nreplace: destinationIndicator" 127 ldif="$ldif}\ndestinationIndicator: $droit" 128 ldif="$ldif}\n-" 129 modif="1" 130 fi 131 fi 132 133 echo -e "$ldif" 134 if [ -n "$modif" ]; then 135 echo -e "$ldif" | ldapmodify -x -D $adminRdn,$ldap_base_dn -w $adminPw 136 fi 137
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |