[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/usr/share/se3/sbin/ -> printerDel.pl (source)

   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;


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1