Hasta ahora hemos visto la forma de obtener la MAC de una IP, pero claro, la IP tiene que estar en uso para poder conocer su MAC. ¿Cómo podríamos hacer para conocer la MAC de varias IPs que aunque no están en uso actualmente sí lo pueden estar en las próximas horas o días?
Se hará lo siguiente: tendremos una lista de IPs a chequear (de las cuales no conocemos sus direcciones MAC). Cada cierto tiempo (pongamos cada hora) se chequearán todas las IPs y las que respondan a ping (y por tanto obtengamos su MAC) las iremos anotando en otra lista.
La lista de IPs a chequear la tendremos en el fichero ips:
192.168.1.2
192.168.1.5
192.168.1.100
192.168.1.200
192.168.1.240
Realizaremos el script que chequeará cada vez que sea llamado:
#!/bin/sh
IFS="
"
for IP in $(cat ips)
do
MAC=`ping -c 1 $IP >/dev/null 2>&1 && arp -n | grep "$IP " | awk '{print $3}'`
if [ $? -eq "0" ]; then
echo $IP $MAC >> macs
else
echo $IP >> tmp
fi
done
mv tmp ips
Y por último, configuraremos cron para que llame al script cada hora:
$ crontab -e
0 * * * * sh /home/juan/chequear.sh
Indicar que, según muestra el script, en el fichero ips nos irán quedando las IPs que no han respondido a ping y en el fichero macs las IPs junto a sus MAC.
Blog sobre la administración de sistemas Linux. Comandos bash, scripts python... Curiosidades y utilidades para hacer más fácil la labor de un administrador de sistemas.
martes, 10 de noviembre de 2009
lunes, 9 de noviembre de 2009
Ejecución de comandos tras el arranque del S.O.
Si deseamos ejecutar algún comando o script tras el arranque del sistema operativo, deberemos especificarlo en el fichero /etc/rc.local:
Añadiendo esta linea bastaría para que tras el arranque de Linux, un equipo sincronice su hora con un servidor de hora (supuesto que el equipo 192.168.1.1 tenga corriendo el servicio ntpd). Esto es muy interesante para equipos con bastantes años que no llevan correctamente la hora del sistema.
Ahora bien, prefiero hacerlo bonito y que quede totalmente integrado con la "estética" del arranque en modo consola de Ubuntu (como en Ubuntu server):
ntpdate -u 192.168.1.1
Añadiendo esta linea bastaría para que tras el arranque de Linux, un equipo sincronice su hora con un servidor de hora (supuesto que el equipo 192.168.1.1 tenga corriendo el servicio ntpd). Esto es muy interesante para equipos con bastantes años que no llevan correctamente la hora del sistema.
Ahora bien, prefiero hacerlo bonito y que quede totalmente integrado con la "estética" del arranque en modo consola de Ubuntu (como en Ubuntu server):
echo -n " * Actualizando la hora del sistema... "
ntpdate -u 192.168.1.1
echo "OK"
ntpdate -u 192.168.1.1
viernes, 6 de noviembre de 2009
Simular comando watch
El comando watch es bastante útil si queremos monitorizar algún valor. Ejecuta el comando que le indiquemos por parámetro cada x segundos indicados también por parámetro, mostrando la salida del comando:
En el ejemplo anterior, se ejecutará el comando date cada segundo (si no se indica periodicidad, por defecto son 2 segundos).
Ahora bien, ¿como podemos simular este comando en equipos que no disponen de él? Ejemplos de ello son instalaciones estándar de algunos sistemas Unix-like. Lo haremos de la siguiente forma:
Este script tiene dos puntos clave: el comando a ejecutar (date en nuestro caso) y la cantidad de segundos a esperar por cada ejecución (1 en nuestro caso). Adaptando estas lineas simularéis el comando watch para la ejecución de lo que queráis.
$ watch -n 1 date
En el ejemplo anterior, se ejecutará el comando date cada segundo (si no se indica periodicidad, por defecto son 2 segundos).
Ahora bien, ¿como podemos simular este comando en equipos que no disponen de él? Ejemplos de ello son instalaciones estándar de algunos sistemas Unix-like. Lo haremos de la siguiente forma:
#!/bin/sh
funcion(){
clear
date
}
while [ 1 ];
do
funcion
sleep 1
done
funcion(){
clear
date
}
while [ 1 ];
do
funcion
sleep 1
done
Este script tiene dos puntos clave: el comando a ejecutar (date en nuestro caso) y la cantidad de segundos a esperar por cada ejecución (1 en nuestro caso). Adaptando estas lineas simularéis el comando watch para la ejecución de lo que queráis.
Suscribirse a:
Entradas (Atom)