[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

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

   1  #!/usr/bin/perl
   2  
   3  #########################################################################
   4  #   Projet SE3 : Modif d'une imprimante à la branche printers de LDAP   #
   5  #                et configuration dans CUPS                             #
   6  #   /usr/share/se3/sbin/printerMod.pl                                   #
   7  #   Philippe Chadefaux @ sambaedu.org                    #
   8  #   Distribué selon les termes de la licence GPL                        #
   9  #########################################################################
  10  
  11  
  12  #####Modifie la conf d'une imprimante#####
  13  ## $Id: printerMod.pl 6654 2011-11-27 16:35:54Z dbo $ ##
  14  #
  15  
  16  use Net::LDAP;
  17  use Unicode::String qw(latin1 utf8);
  18  
  19  require '/etc/SeConfig.ph';
  20  
  21  $ldap = Net::LDAP->new(
  22                 "$slapdIp",
  23                 port    => "$slapdPort",
  24                 debug   => "$slapdDebug",
  25                 timeout => "$slapdTimeout",
  26                 version => "$slapdVersion"
  27                );
  28  
  29  $ldap->bind(
  30          $adminDn,
  31          password => $adminPw
  32         );
  33  
  34  die("Erreur d'argument.\n") if ($#ARGV < 5);
  35  
  36  
  37  ($nom_imprimante,$uri_imprimante,$lieu_imprimante,$info_imprimante,$protocole,$pilote,$mode)=@ARGV;
  38  
  39  $nom_imprimante            = latin1($nom_imprimante)->utf8;
  40  $info_imprimante    = latin1($info_imprimante)->utf8;
  41  $lieu_imprimante    = latin1($lieu_imprimante)->utf8;
  42  
  43  
  44  if ( $protocole eq "socket" ){
  45    $uri_imprimante = "socket://".$uri_imprimante.":9100";
  46  }
  47  elsif ( $protocole eq "http" ){
  48    $uri_imprimante = "http://".$uri_imprimante.":631";
  49  }
  50  elsif ( $protocole eq "ipp" ){
  51    $uri_imprimante="http://".$uri_imprimante.":631/printers/".$nom_imprimante;
  52  }
  53  elsif ( $protocole eq "parallel" ){
  54    $uri_imprimante="parallel:/dev/".$uri_imprimante;
  55  }
  56  elsif ( $protocole eq "usb" ){
  57    $uri_imprimante="usb:/dev/usb/".$uri_imprimante;
  58  }
  59  elsif ( $protocole eq "lpd" ){
  60    $uri_imprimante="lpd://".$uri_imprimante."/".$nom_imprimante;
  61  }
  62  elsif ( $protocole ne "custom" ){
  63    $uri_imprimante="smb://adminse3:".$xppass."@".$uri_imprimante."/".$uri_imprimante."/".$nom_imprimante;
  64  }
  65  
  66  $result = $ldap->modify( "printer-name=$nom_imprimante,$printersDn",
  67                replace =>[
  68                     'printer-uri'        => $uri_imprimante,
  69                     'printer-location'    => $lieu_imprimante,
  70                     'printer-info'        => $info_imprimante,
  71                     'printer-more-info'    => $mode,
  72                     'nprintHardwareQueueName'=> $pilote,
  73                     objectClass =>['printerService','nprintNetworkPrinterInfo',
  74                            'extensibleObject'],
  75                    ]
  76              );        
  77  
  78  die("Echec à l'entrée dans ldap.\n") if ($result->code != 0);                    
  79  #$result->code && warn "failed to add entry: ", $result->error ;
  80  $mesg = $ldap->unbind;  # take down session
  81  
  82  # On commnce par la virer, car si la modif touche le protocole ou le driver il faut nettoyer les travaux existant
  83  system("/usr/sbin/lpadmin -h 127.0.0.1 -x $nom_imprimante");
  84  
  85  # Puis on recrée pour pas de driver il faut envoyer raw a cups
  86  if($pilote eq "dep") {
  87      $pilote="raw";
  88  }    
  89  
  90  die ("Configuration CUPS échouée.\n") if (system("/usr/bin/sudo /usr/share/se3/scripts/lpadmin.sh -p $nom_imprimante -v $uri_imprimante -D \"$info_imprimante\" -L \"$lieu_imprimante\" -m $pilote -E") != 0);
  91  
  92  
  93  system("/usr/share/se3/sbin/printers_group.pl");
  94  # die ("Création des fichiers de conf échouée.\n") if (system("/usr/bin/sudo /usr/share/se3/sbin/printers_group.pl") != 0);
  95  
  96  die ("Redémarrage de Samba échoué.\n") if (system("/usr/bin/sudo /usr/share/se3/scripts/sambareload.sh") !=0);
  97  
  98  exit 0;


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