Administración de aulas de informática con Linux (2 de 3): script para ejecutar órdenes en todos los ordenadores

Post date: 17-May-2012 12:14:44

Queremos hacer un script que coja como argumento una orden y la ejecute en todos los ordenadores de los alumnos.

Para conseguirlo:

1. En el ordenador del profesor, iniciamos una sesión en un terminal como root.

2. Abrimos un archivo para editar, con el comando nano.

nano ejecuta_todos.sh

3. Copiamos el siguiente contenido

#!/bin/bash
let COUNTER=1
for i in 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
do

echo "________________________________ "

echo "Ordenador "$COUNTER "(Dirección IP 10.124.4."$i")"

ssh 10.124.4.$i $1

echo "________________________________ "

echo " "

let COUNTER=COUNTER+1

done

nota: los ordenadores de los alumnos tienen la dirección 10.124.4.XX, con XX que va de 41 a 55. Cambiar de acuerdo a los ordenadores del aula.

4. Cambiamos los permisos de ejecución

chmod 755 ejecuta_todos.sh

Ya está. Para probarlo, ejecutamos por ejemplo

./ejecuta_todos.sh "uname -a"

La salida del programa será

root@prof:~# ./ejecuta_todos.sh "uname -a"
________________________________ 
Ordenador 1 (Dirección IP 10.124.4.41)
Linux 1I 2.6.35-28-generic #50-Ubuntu SMP Fri Mar 18 19:00:26 UTC 2011 i686 GNU/Linux
________________________________ 
 
________________________________ 
Ordenador 2 (Dirección IP 10.124.4.42)
ssh: connect to host 10.124.4.22 port 22: No route to host
________________________________ 
 
________________________________ 
Ordenador 3 (Dirección IP 10.124.4.43)
Linux 3I 2.6.35-28-generic #50-Ubuntu SMP Fri Mar 18 19:00:26 UTC 2011 i686 GNU/Linux
________________________________ 

etc.