"Después del juego es antes del juego"
Sepp Herberger

viernes, 22 de mayo de 2015

Averiguar numero de serie y marca de los monitores.

Cuando estamos inventariando monitores una manera simple de saber su número de serie sin tener que mirar el código de barras por detrás es usar este comando que me descrubrió mi compañero Oscar:

# hwinfo --monitor

Entre otros datos, saldrá el número de serie, la marca, el modelo, etc . Por desgracia, esto no funciona para cualquier monitor ya que no todos tienen el número de serie "grabado a fuego" en su interior, pero al menos para los monitores que tengo en casi todo el centro funciona. También es necesario que al ejecutarse el monitor esté encendido, por motivos obvios: si no está encendido el PC no puede preguntarle nada.

Para automatizar esto podemos hacer un script que se ejecute en el arranque, coja los datos que queramos y lo escriba en algún fichero en alguna ubicación de red. De esta manera podemos inventariar de forma masiva.

Otra opción, si tenemos puppet, es crear un facter que obtenga esos datos y los guarde en los .yaml que crea puppet en el servidor, junto con los otros facter de la máquina. El facter se guardaría en cada PC, en /usr/lib/ruby/vendor_ruby/facter/monitor.rb y su contenido sería (toma Ruby pal cuerpo):

if File.exists?("/usr/sbin/hwinfo")

serial = Facter::Util::Resolution.exec('hwinfo --monitor 2>/dev/null | grep "Serial ID:" | head -1 | cut -d":" -f2')
if not serial.nil?
Facter.add("monitor-serial") do
serial=serial.delete('"').strip
setcode {serial}
end
end

model = Facter::Util::Resolution.exec('hwinfo --monitor 2>/dev/null | grep "Model:" | head -1 | cut -d":" -f2' )
if not model.nil?
Facter.add("monitor-model") do
model=model.delete('"').strip
setcode {model}
end
end

vendor = Facter::Util::Resolution.exec('hwinfo --monitor 2>/dev/null | grep "Vendor:" | head -1 | cut -d":" -f2')
if not vendor.nil?
Facter.add("monitor-vendor") do
vendor=vendor.delete('"').strip
setcode {vendor}
end
end
end

Evidentemente, habría que instalar el paquete hwinfo en las máquinas e incluirlo en el mayhave que tuvieramos en el pkgsync. Si lo probamos en una de las máquinas:

# facter | grep monitor
monitor-model => 151E
monitor-serial => YEPF619484
monitor-vendor => FUS

Eso sería lo que se guardaría en el fichero .yaml de la máquina, en la ruta /var/lib/puppet/yaml/fact del servidor puppet .

Una vez hecho esto, sería sencillo procesar todos los ficheros .yaml con un script que haga el inventario de todas las máquinas conectadas a puppet.

 

No hay comentarios:

Publicar un comentario