[Remoto] SSH: Conexión mediante MAC en la LAN

Se trata de conectarnos por ssh a un equipo conociendo su MAC. Como ssh necesita el parámetro de la dirección del equipo y no su MAC, he creado un script, siempre mejorable, para realizar esta función. Se ha probado en Debian 11 y 12.

Fichero que contiene las direcciones MAC de los equipos del aula.

1301 64:51:06:51:0a:05
1302 64:51:06:60:0e:35
1303 64:51:06:57:fb:52
1304 64:51:06:60:0e:3e
1305 64:51:06:51:0c:ca
1306 64:51:06:51:07:c3
1307 64:51:06:57:fb:d4
1308 64:51:06:50:f5:ae
1309 64:51:06:50:f1:eb
1310 64:51:06:57:fb:ae
1311 64:51:06:50:f0:eb
1312 64:51:06:60:0e:3c
1313 64:51:06:52:27:55
1314 64:51:06:5b:af:0d
1315 64:51:06:52:29:61
1316 64:51:06:52:40:65
1317 4c:ed:fb:3f:0f:9a
1318 e0:d5:5e:46:8d:67
1319 e0:d5:5e:46:8d:33
1320 4c:ed:fb:3f:0f:01
1321 e0:d5:5e:46:8d:6b
1322 4c:ed:fb:3f:0f:67
1323 4c:ed:fb:3f:0d:e6
1324 e0:d5:5e:46:89:c5

Script para conectar con un equipo del taller mediante ssh utilizando su MAC. Se usa el paquete arp-scan, previamente instalado, y debe ejecutarse con permisos de root. Instalar previamente arp-scan

# aptitude install arp-scan

# Variables de entrada
# - $1 el número del pc (1301..1324), debe tener 4 caracteres
# - $2 es la letra del usuario (a,b,c)
# ejemplo de llamada: # bash conecta.sh 1301 c
clear
# Nombre del hostname y red
pc_num=$1
# comprobamos longitud de la cadena de entrada
if [[ ${#pc_num} -ne 4 ]]; then
echo Identificador del PC incorrecto: Debe contener 4 caracteres
exit
fi
pc_nombre=pc$pc_num
pc_red="192.168.113.0/24"
# Buscar en archivo la mac del equipo, segundo campo de cada línea
archivo="mac13.txt"
pc_mac=$(grep $1 $archivo | awk '{print $2}')
if [[ -z "$pc_mac" ]]; then
echo "Identificador del PC no encontrado"
exit
fi
# Busqueda de la IP de ese equipo
echo Buscando en la red $pc_red la IP del equipo $pc_nombre con MAC $pc_mac...
pc_ip=$(arp-scan $pc_red | grep $pc_mac | awk '{print $1}' | head -n1)
if [[ -z "$pc_ip" ]]; then
echo "PC no encontrado"
exit
fi
# IP identificada, entrar por ssh en usuario...
echo La IP del equipo $pc_nombre es $pc_ip
echo Conectandose con usuario sti$1$2...
ssh sti$1$2@$pc_ip

Se llama con

# bash conecta.sh XXXX Y

donde XXXX es el número que identifica el equipo: el primer campo de cada fila del fichero de texto que contienen las MAC. e Y es la letra del usuario a, b o c. Ejemplo:

# bash conecta.sh 1301 a

Este script se puede adaptar a otra aula modificando los valores de las líneas que contienen el nombre del fichero que contiene las MAC y la dirección IP:

Línea pc_red=“192.168.113.0/24”

Línea archivo=“mac13.txt”