miércoles, 30 de abril de 2014

Eliminando Entradas inválidas en ficheros mayhave y musthave

Tomando como punto de partida el articulo de Esteban Navas

http://enavas.blogspot.com.es/2014/04/detectar-entradas-no-validas-en-los.html

en la cual nos enseñaba como conocer las entradas de los ficheros pkgsync/musthave y mayhave que no se encuentran en los repositorios. Voy a darle un pequeño giro de tuerca para actualizar los dichos archivos en el servidor puppet, ya que contienen varias de estas entradas y al ejecutar pkgsync se realentiza mucho por esto.

Lo primero de todo es asegurarnos que el equipo con el que vamos a hacer el proceso tenga añadidos en /etc/apts/sources.list y sources.d

Tal y como indica Esteban cogemos un equipo, en mi caso un portátil y ejecuto:

 # pkgsync -s|grep "No se puede encontrar"|cut -f2 -d"\""|grep -v "^$"|sort -u > entradasNoValidas.txt

y nos creará el fichero entradasNoValidas.txt con los archivos que no se encuentran en los repositorios.

que vemos como contienen varios paquetes:
 01:~# cat entradasNoValidas.txt
acroreader-es
activaid
activdriver
activhwr-es
activhwr-fr
activhwr-pt
activinspire
activinspire-help-es
activinspire-licence
activ-meta-es
activresources-core-es
activtools
aulalinex-alumno
broadcom-sta-modules-2.6.32-5-686
debian-multimedia-keyring
fglrx-kernel-2.6.32-4-686
geogebra-installer-linex
linux-image-2.6.30-1-686
linux-image-2.6.30-2-686
linux-image-2.6.32-4-686
linux-image-2.6.36-rc5
smart-installer-linex
smart-linex


ahora veamos como podemos eliminar esas líneas de los archivos /etc/pkgsync/musthave y mayhave que le indican a pkgsync los archivos que deben estar instalados y pueden estar instalados, respectivamente.

Con la el comando:
#egrep -v -x -f entradasNoValidas.txt /etc/pkgsync/musthave > musthave.nuevo

egrep hace busquedas en el fichero musthave.nuevo. Busca las ocurrencias de lineas que le indicamos con la opción -f y el nombre de fichero, en este caso entradasNoValidas.txt, es decir que buscaría las lineas de entradas no válidas en el musthave. Como lo que queremos es precisamente lo contrario, ponemos la opción -v que nos da como salida las lineas que no cumplan la ocurrencia o no se encuentre. Por último tenemos la opción -x que le indica que las ocurrencias tienen que ser literales, así evitamos por ejemplo que si tenemos una entrada no válida el paquete smart no nos elimine también el paquete libatasmart4 que sí debe estar.

Hacemos lo propio con el archivo mayhave guardándolo en un archivo temporal:

#egrep -v -x -f entradasNoValidas.txt /etc/pkgsync/mayhave > mayhave.auxiliar

para rizar el rizo comprobamos que no haya paquetes coincidentes en ambos archivos, para lo cual hacemos lo propio entre el musthave nuevo y el mayhave y ya obtenemos el mayhave definitivo.

#egrep -v -x -f musthave.nuevo mayhave.auxiliar > mayhave.nuevo

Por último ya solo nos queda sustituir estos archivos por los que tenemos en puppet, en este caso 
/etc/puppet/files/mayhave.portatil

y

/etc/puppet/files/mayhave.portatil

Si queremos lo podemos poner todo en un script genérico que quedaría tal que así:

#! /bin/bash
EQUIPO=portatil
pkgsync -s|grep "No se puede encontrar"|cut -f2 -d"\""|grep -v "^$"|sort -u > entradasNoValidas.txt
egrep -v -x -f entradasNoValidas.txt /etc/pkgsync/musthave|sort > musthave.nuevo
egrep -v -x -f entradasNoValidas.txt /etc/pkgsync/mayhave|sort > mayhave.auxiliar
egrep -v -x -f musthave.nuevo mayhave.auxiliar|sort > mayhave.nuevo
scp -f musthave.nuevo root@servidor:/etc/puppet/files/musthave.$EQUIPO
scp -f mayhave.nuevo root@servidor:/etc/puppet/files/mayhave.$EQUIPO
rm -f mayhave.auxiliar
rm -f mayhave.$EQUIPO
rm -f musthave.$EQUIPO
rm -f entradasNoValidas.txt

en concreto para los portátiles un poco más afinado sería:

#! /bin/bash
EQUIPO=portatil
pkgsync -s|grep "No se puede encontrar"|cut -f2 -d"\""|grep -v "^$"|sort -u > entradasNoValidas.txt
egrep -v -x -f entradasNoValidas.txt /etc/pkgsync/musthave|sort > musthave.nuevo
egrep -v -x -f entradasNoValidas.txt /etc/pkgsync/mayhave|sort > mayhave.auxiliar
egrep -v -x -f musthave.nuevo mayhave.auxiliar|sort > mayhave.nuevo
scp  musthave.nuevo root@servidor:/etc/puppet/files/musthave-miniportatil-apd
scp  mayhave.nuevo root@servidor:/etc/puppet/files/mayhave.$EQUIPO
rm -f mayhave.auxiliar
rm -f mayhave.nuevo
rm -f musthave.nuevo
rm -f entradasNoValidas.txt

#! /bin/bash
EQUIPO=workstation
pkgsync -s|grep "No se puede encontrar"|cut -f2 -d"\""|grep -v "^$"|sort -u > entradasNoValidas.txt
egrep -v -x -f entradasNoValidas.txt /etc/pkgsync/musthave|sort > musthave.nuevo
egrep -v -x -f entradasNoValidas.txt /etc/pkgsync/mayhave|sort > mayhave.auxiliar
egrep -v -x -f musthave.nuevo mayhave.auxiliar|sort > mayhave.nuevo
scp  musthave.nuevo root@servidor:/etc/puppet/modules/workstation-pkgsync/files/musthave-$EQUIPO
scp  mayhave.nuevo root@servidor:/etc/puppet/modules/workstation-pkgsync/files/mayhave-$EQUIPO
rm -f mayhave.auxiliar
rm -f mayhave.nuevo
rm -f musthave.nuevo
rm -f entradasNoValidas.txt

para workstations.



# pkgsync -s|grep "No se puede encontrar"|cut -f2 -d"\""|grep -v "^$"|sort -u - See more at: http://enavas.blogspot.com.es/2014/04/detectar-entradas-no-validas-en-los.html#sthash.nYB6Ci6P.dpuf
# pkgsync -s|grep "No se puede encontrar"|cut -f2 -d"\""|grep -v "^$"|sort -u - See more at: http://enavas.blogspot.com.es/2014/04/detectar-entradas-no-validas-en-los.html#sthash.nYB6Ci6P.dpuf
# pkgsync -s|grep "No se puede encontrar"|cut -f2 -d"\""|grep -v "^$"|sort -u - See more at: http://enavas.blogspot.com.es/2014/04/detectar-entradas-no-validas-en-los.html#sthash.nYB6Ci6P.dpuf
# pkgsync -s|grep "No se puede encontrar"|cut -f2 -d"\""|grep -v "^$"|sort -u - See more at: http://enavas.blogspot.com.es/2014/04/detectar-entradas-no-validas-en-los.html#sthash.nYB6Ci6P.dpuf
# pkgsync -s|grep "No se puede encontrar"|cut -f2 -d"\""|grep -v "^$"|sort -u - See more at: http://enavas.blogspot.com.es/2014/04/detectar-entradas-no-validas-en-los.html#sthash.nYB6Ci6P.dpuf

No hay comentarios:

Publicar un comentario