9 oct 2013

Buscar los enlaces de un script de inicio

En ocasiones, nos surge la necesidad de obtener la lista de enlaces a un script de inicio que hay en:
rc0.d/    rc2.d/    rc4.d/    rc6.d/    rcS.d/    
rc1.d/    rc3.d/    rc5.d/    rc.local  

Una forma de obtener dicha lista es combinando comandos. Por ejemplo, de la siguiente manera:

# ls -l $(find /etc/rc* -type l) | grep nombreservicioabuscar | cut -f1 -d"-"

Si en la línea de comandos anterior, cambio mombreservicioabuscar por el nombre de un servicio, como por ejemplo, proftpd, la cosa quedaría así:

# ls -l $(find /etc/rc* -type l) | grep proftpd | cut -f1 -d"-"

Y la salida del comando, sería más o menos así:

lrwxrwxrwx 1 root root 17 dic 15  2012 /etc/rc0.d/K01proftpd 
lrwxrwxrwx 1 root root 17 dic 15  2012 /etc/rc1.d/K01proftpd 
lrwxrwxrwx 1 root root 17 may  8 20:13 /etc/rc2.d/S03proftpd 
lrwxrwxrwx 1 root root 17 may  8 20:13 /etc/rc3.d/S03proftpd 
lrwxrwxrwx 1 root root 17 may  8 20:13 /etc/rc4.d/S03proftpd 
lrwxrwxrwx 1 root root 17 may  8 20:13 /etc/rc5.d/S03proftpd 
lrwxrwxrwx 1 root root 17 dic 15  2012 /etc/rc6.d/K01proftpd 

Publicado por primera vez en http://enavas.blogspot.com.es

Script para encender equipos mediante nombre

Alguien me preguntaba hoy cómo podía encender un equipo desde un script de forma remota, aprovechando que tenemos  almacenada la información de las máquinas en el servidor ldap.

Como es algo muy sencillo que podemos hacer simplemente apoyándonos en ldapsearch y teniendo instalado el paquete wakeonlan, pego aquí el script que lo hace.

A este script le indicamos como parámetro el nombre de la máquina y hará una búsqueda en ldap para obtener su MAC. Una vez obtenida, lo único que hace es lanzar el comando wakeonlan:

#!/bin/bash 
 
BROADCAST="172.19.145.255"
 
# Comprobamos si se ha introducido un parámetro
if [ $# -lt 1 ]; then
echo "ERROR: Debe especificar el nombre del equipo a encender"
echo "Sintaxis: $0 nombreequipo"
exit
fi

EQUIPO=$1

MAC=`ldapsearch -xLLL -h ldap -b "dc=instituto,dc=extremadura,dc=es" cn=$EQUIPO | grep dhcpHWAddress|cut -f3 -d" "`

if [ ! $MAC ]; then
echo "No existe ningún equipo con el nombre $EQUIPO."
else
echo "Vamos a encender el equipo $EQUIPO con mac $MAC."
wakeonlan -i $BROADCAST $MAC
fi


Por supuesto, para poder encender cualquier equipo por red, éste deberá tener activado el Wake-on-lan en la BIOS.

Publicado por primera vez en http://enavas.blogspot.com.es