[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 #!/usr/bin/perl 2 3 ###################################################################### 4 # Projet SE3 : Suppression intégrale d'une imprimante # 5 # supprimée de CUPS et n'est plus membre d'aucun parc # 6 # /usr/share/se3/sbin/printerDel.pl # 7 # Patrice André <h.barca@free.fr> # 8 # Carip-Académie de Lyon -avril-juin-2004 # 9 # Dernière mise-à-jour:25/05/2004 # 10 # Distribué selon les termes de la licence GPL # 11 ###################################################################### 12 13 #Suppression définitive des imprimantes 14 15 use Net::LDAP; 16 use Unicode::String qw(latin1 utf8); 17 18 require '/etc/SeConfig.ph'; 19 20 $ldap = Net::LDAP->new( 21 "$slapdIp", 22 port => "$slapdPort", 23 debug => "$slapdDebug", 24 timeout => "$slapdTimeout", 25 version => "$slapdVersion" 26 ); 27 28 $ldap->bind( 29 $adminDn, 30 password => $adminPw 31 ); 32 33 die("Erreur d'argument.\n") if ($#ARGV < 0); 34 35 $nom_imprimante = shift @ARGV; 36 $nom_imprimante = latin1($nom_imprimante)->utf8; 37 38 # Suppression de l'imprimante de la branche $printersDn (Printer) 39 $result = $ldap->delete( "printer-name=$nom_imprimante,$printersDn", 40 attrs =>[ 41 'printer-name' => $nom_imprimante, 42 ] 43 ); 44 $result->code && warn "failed to delete entry ", $result->error ; 45 46 # Recherche de tous les parcs existants. Dans le but de supprimer les occurences de l'imprimante 47 # qui peuvent apparaitre dans l'attribut "member" de la branche $parcDn (Parc) 48 $recherche = $ldap->search( base => $parcDn, 49 scope => "sub", 50 filter => "cn=*", 51 attrs => ['member'] 52 ); 53 54 die("Echec à l'entrée dans ldap.\n") if ($result->code != 0); 55 56 # Dans chaque parc, si une occurence de l'imprimante a été trouvée, on l'efface. 57 foreach $entree ($recherche->all_entries()) { 58 $member=$entree->get_value('member',asref=>1); #renvoie une référence sur un tableau (plusieurs occurences de members) 59 $nb_member=scalar(@$member); 60 for ($i=0; $i<$nb_member; $i++) { 61 if ($member->[$i] eq "cn=$nom_imprimante,$printersDn") { 62 $cn_parc=$entree->get_value('cn'); 63 $result = $ldap->modify( "cn=$cn_parc,$parcDn", 64 delete => {'member' => "cn=$nom_imprimante,$printersDn"} 65 ); 66 die("Echec à l'entrée dans ldap.\n") if ($result->code != 0); 67 } 68 } 69 } 70 $mesg = $ldap->unbind; # take down session 71 72 die ("Configuration CUPS échouée.\n") if (system("/usr/sbin/lpadmin -h 127.0.0.1 -x $nom_imprimante") != 0); 73 74 die ("Redémarrage de Samba échoué.\n") if (system("/usr/bin/sudo /usr/share/se3/scripts/sambareload.sh") !=0); 75 76 die ("Script de partage d'imprimantes Samba échoué.\n") if (system("/usr/share/se3/sbin/printers_group.pl") !=0); 77 78 exit 0;
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 |