[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/usr/share/se3/sbin/ -> se3_csv_generer_entrees_computers.sh (source)

   1  #!/bin/bash
   2  
   3  #
   4  ## $Id: se3_csv_generer_entrees_computers.sh 6654 2011-11-27 16:35:54Z dbo $ ##
   5  #
   6  ##### Import des entrees computers d apres un CSV IP;NOM;MAC #####
   7  #
   8  # Import des entrees computers d apres un CSV IP;NOM;MAC
   9  
  10  # Stephane Boireau
  11  
  12  if [ -z "$1" -o ! -e "$1" ]; then
  13      echo "USAGE: Fournir un CSV des machines:"
  14      echo "         IP;NOM;MAC"
  15      echo "       Eventuellement:"
  16      echo "         IP;NOM;MAC;PARC"
  17      echo ""
  18      echo "       Un fichier au format IP;NOM;MAC peut etre genere en effectuant un export"
  19      echo "       des reservations DHCP (se3-dhcp)."
  20      exit
  21  fi
  22  DHCPCSV=$1
  23  
  24  . /usr/share/se3/sbin/variables_admin_ldap.sh lib > /dev/null
  25  if [ -z "$ROOTDN" ]; then
  26      echo "ERREUR: La version de variables_admin_ldap.sh n'est pas assez recente."
  27      echo "        Les variables ROOTDN, PASSDN,... ne sont pas initialisees."
  28      exit
  29  fi
  30  
  31  tmp=/root/tmp/creation_entrees_machines_d_apres_un_csv_$(date +%Y%m%d%H%M%S)
  32  mkdir -p $tmp
  33  
  34  while read A
  35  do
  36      IP=$(echo "$A"|cut -d";" -f1)
  37      NOM=$(echo "$A"|cut -d";" -f2|tr "[A-Z]" "[a-z]")
  38      MAC=$(echo "$A"|cut -d";" -f3|tr "[a-z]" "[A-Z]")
  39      PARC=$(echo "$A"|cut -d";" -f4)
  40  
  41      #t=$(echo "$IP"|sed -e "s|[0-9.]||g")
  42      t=$(echo "$IP"|sed -e "s|[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}||g")
  43      if [ -n "$t" ]; then
  44          IP=""
  45      fi
  46  
  47      t=$(echo "$NOM"|sed -e "s|[a-zA-Z0-9_.]||g")
  48      if [ -n "$t" ]; then
  49          NOM=""
  50      fi
  51  
  52      t=$(echo "$MAC"|sed -e "s|[A-F0-9:]||g")
  53      if [ -n "$MAC" ]; then
  54          MAC=""
  55      fi
  56  
  57      t=$(echo "$PARC"|sed -e "s|[a-zA-Z0-9_.]||g")
  58      if [ -n "$t" ]; then
  59          PARC=""
  60      fi
  61  
  62      if [ -n "$IP" -a -n "$NOM" -a -n "$MAC" ]; then
  63          # Inutile de remplir le UNATTENDCSV:
  64          # Il faut juste les entrees dans l'annuaire.
  65          # Pour le reste:
  66          # - importer le CSV dans DHCP
  67          # - lancer unattended-generate.sh
  68          # Creer un parc et y mettre ces machines.
  69          #UMAC=$(echo "$MAC" | sed -e "s|:||g")
  70          #if ! grep "^\"$UMAC\"," $UNATTENDCSV; then
  71          #    echo "^\"$UMAC\",\"ComputerName\",\"$NOM\"" >> $UNATTENDCSV
  72          #    echo "^\"$NOM\",\"FullName\",\"$NOM\"" >> $UNATTENDCSV
  73          #fi
  74      
  75          t=$(ldapsearch -xLLL macAddress=$MAC)
  76          if [ -z "$t" ]; then
  77              echo "dn: cn=$NOM,ou=Computers,$BASEDN}
  78  cn: $NOM
  79  objectClass: top
  80  objectClass: ipHost
  81  objectClass: ieee802Device
  82  objectClass: organizationalRole
  83  ipHostNumber: $IP
  84  macAddress: $MAC
  85  " > $tmp}/$NOM}.ldif
  86              echo "Ajout de $NOM"
  87              ldapadd -x -D $ROOTDN} -w $ADMINPW} -f $tmp}/$NOM}.ldif
  88              if [ "$?" = "0" -a -n "$PARC" ]; then
  89  
  90                  t=$(ldapsearch -xLLL -b ou=Parcs,$BASEDN cn=$PARC)
  91                  if [ -z "$t" ]; then
  92                      echo "Creation du parc $PARC et ajout de $NOM au parc"
  93                      echo "dn: cn=$PARC,ou=Parcs,$BASEDN}
  94  objectClass: groupOfNames
  95  cn: $PARC
  96  member: cn=$NOM,ou=Computers,$BASEDN
  97  " > $tmp}/$PARC}_avec_$NOM}.ldif
  98                      ldapadd -x -D $ROOTDN} -w $ADMINPW} -f $tmp}/$PARC}_avec_$NOM}.ldif
  99                  else
 100                      echo "Ajout de $NOM au parc $PARC"
 101                      echo "dn: cn=$PARC,ou=Parcs,$BASEDN}
 102  changetype: modify
 103  add: member
 104  member: cn=$NOM,ou=Computers,$BASEDN
 105  " > $tmp}/$PARC}_ajout_$NOM}.ldif
 106                      ldapmodify -x -D $ROOTDN} -w $ADMINPW} -f $tmp}/$PARC}_ajout_$NOM}.ldif
 107                  fi
 108              fi
 109          fi
 110      else
 111          echo "Ligne
 112      $A
 113  non conforme, donc non traitee."
 114      fi
 115  done < $DHCPCSV
 116  
 117  echo "Si des entrees ont ete ajoutees, pensez a relancer unattended-generate.sh"


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