root/scripts/ldap/renhost-workstation.sh @ 559
535 | adminies.v | #!/bin/bash
|
|
#Modifica el nombre de un equipo en LDAP
|
|||
#Ricardo Salgado Cid
|
|||
#IESO Galisteo
|
|||
#
|
|||
#20/03/12 Adaptado a ldaps
|
|||
#07/10/10 Modificacion para que funcione adecuadamente con los host con los que se uso lwat
|
|||
#17/09/10 Release incial ()
|
|||
PASSWORDLDAP=""
|
|||
#Usa el valor de esta variable como password de ldap en vez de pedirla en cada ocasión.
|
|||
#Ojo!, utilizar con cuidado
|
|||
if [ $# -ne 2 ]; then
|
|||
echo "Uso: $0 nombre_actual nuevo_nombre"
|
|||
exit
|
|||
fi
|
|||
dominio=`hostname -d`
|
|||
nactual=$1
|
|||
nnuevo=$2
|
|||
FICHERO=$nnuevo.$dominio.ldif
|
|||
if [ -e $FICHERO ]; then
|
|||
rm $FICHERO
|
|||
fi
|
|||
dnactual=$(ldapsearch -xLLL -h ldap -b cn="DHCP Config",dc=instituto,dc=extremadura,dc=es "(&(objectClass=dhcpHost)(cn=$nactual))" dn | perl -p0e 's/\n //g' )
|
|||
if [ ! "$dnactual" ] ; then
|
|||
echo "No hay ningun equipo llamado $nactual"
|
|||
exit 1
|
|||
fi
|
|||
if ldapsearch -xLLL -h ldap -b cn="DHCP Config",dc=instituto,dc=extremadura,dc=es "(&(objectClass=dhcpHost)(cn=$nnuevo))" dn | perl -p0e 's/\n //g' > /dev/null ; then
|
|||
echo "Ya existe un equipo con el nombre $nnuevo"
|
|||
exit 1
|
|||
fi
|
|||
dnnuevo=$(echo $dnactual | sed "s/$nactual/$nnuevo/" )
|
|||
ip=$(ldapsearch -xLLL -h ldap -b dc="$dominio",ou="hosts",dc=instituto,dc=extremadura,dc=es "(&(|(objectClass=dNSDomain2)(objectClass=dNSDomain))(dc=$nactual))" | grep aRecord: | cut -d" " -f2)
|
|||
ip1=$(echo $ip | cut -d"." -f1)
|
|||
ip2=$(echo $ip | cut -d"." -f2)
|
|||
ip3=$(echo $ip | cut -d"." -f3)
|
|||
ip4=$(echo $ip | cut -d"." -f4)
|
|||
echo "$dnactual
|
|||
changetype: moddn
|
|||
newrdn: cn=$nnuevo
|
|||
deleteoldrdn: 1
|
|||
$dnnuevo
|
|||
changetype: modify
|
|||
delete: dhcpStatements
|
|||
$dnnuevo
|
|||
changetype: modify
|
|||
add: dhcpStatements
|
|||
dhcpStatements: fixed-address $nnuevo
|
|||
dn: dc=$nactual,dc=$dominio,ou=hosts,dc=instituto,dc=extremadura,dc=es
|
|||
changetype: moddn
|
|||
newrdn: dc=$nnuevo
|
|||
deleteoldrdn: 1
|
|||
dn: dc=$nnuevo,dc=$dominio,ou=hosts,dc=instituto,dc=extremadura,dc=es
|
|||
changetype: modify
|
|||
replace: associatedDomain
|
|||
associatedDomain: $nnuevo.$dominio
|
|||
dn: dc=$ip4,dc=$ip3,dc=$ip2,dc=$ip1,dc=in-addr,dc=arpa,ou=hosts,dc=instituto,dc=extremadura,dc=es
|
|||
changetype: modify
|
|||
replace: pTRRecord
|
|||
pTRRecord: $nnuevo.$dominio
|
|||
" > $FICHERO
|
|||
#Comprobar si el host tiene la entrada extra que añade lwat
|
|||
#y en ese caso modificarla tambien
|
|||
entradalwat=$(ldapsearch -xLLL -h ldap -b ou="hosts",dc=instituto,dc=extremadura,dc=es "(&(objectClass=ipHost)(cn=$nactual))" dn | perl -p0e 's/\n //g')
|
|||
if [ "$entradalwat" ]; then
|
|||
echo "$entradalwat
|
|||
changetype: moddn
|
|||
newrdn: cn=$nnuevo
|
|||
deleteoldrdn: 1
|
|||
">> $FICHERO
|
|||
fi
|
|||
echo "dn: cn=workstation-hosts, ou=Netgroup,dc=instituto,dc=extremadura,dc=es
|
|||
changetype: modify
|
|||
replace: nisNetgroupTriple" >> $FICHERO
|
|||
ldapsearch -xLLL -h ldap -b ou=Netgroup,dc=instituto,dc=extremadura,dc=es "(cn=workstation-hosts)" | grep nisNetgroupTriple | grep -v "nisNetgroupTriple: ($nactual," | while read triple
|
|||
do
|
|||
echo $triple >> $FICHERO
|
|||
done
|
|||
echo "nisNetgroupTriple: ($nnuevo,-,-)" >> $FICHERO
|
|||
if [ "$PASSWORDLDAP" ]; then
|
|||
ldapmodify -c -x -H ldaps://ldap.$dominio -w$PASSWORDLDAP -D "cn=admin,ou=People,dc=instituto,dc=extremadura,dc=es" -f $FICHERO
|
|||
else
|
|||
ldapmodify -c -x -H ldaps://ldap.$dominio -W -D "cn=admin,ou=People,dc=instituto,dc=extremadura,dc=es" -f $FICHERO
|
|||
fi
|
|||
read -p "Intentar eliminar los restos del normbre antiguo en puppet (s/n)?"
|
|||
if [ $REPLY != "s" ]; then
|
|||
exit 1
|
|||
fi
|
|||
host=$nactual
|
|||
if [ "$(hostname)" = "servidor" ]; then
|
|||
puppetca --clean $host.$dominio; rm /var/lib/puppet/yaml/facts/$host.$dominio.yaml; rm /var/lib/puppet/yaml/node/$host.$dominio.yaml
|
|||
else
|
|||
echo "Es necesaria la contrseña de root del servidor nfs"
|
|||
ssh root@servidor "puppetca --clean $host.$dominio; rm /var/lib/puppet/yaml/facts/$host.$dominio.yaml; rm /var/lib/puppet/yaml/node/$host.$dominio.yaml"
|
|||
fi
|