Una herramienta básica para todo administrador de sistemas es Openssh. Con él podemos administrar remotamente cualquier máquina, mediante una conexión segura ssh, como si estuviéramos delante ella. Entre esas tareas tenemos la posibilidad de ejecutar comandos o copiar archivos a gracias a scp. Para trabajar contra un solo servidor nos vale, pero ¿ y si estamos administrando varios a la vez? Usando scp tendríamos que copiar esos archivos a cada host, uno a uno. Esta limitación tiene una solución, y es la herramienta PSSH (Parallel SSH Tools), con la que podremos trabajar en paralelo con varios equipos.
Para la instalación de esta herramienta utilizaremos otra utilidad, como es python-pip, que nos ayuda en la instalación y manejo de programas basados en Python:
apt-get install python-pip
Una vez hecho, descargamos e instalamos PSSH con el siguiente comando, él solo descargará e instalará todo:
pip install pssh
PSSH incluye las siguientes utilidades:
- pssh –> Ejecuta comandos en varios hosts simultáneamente
- pscp –> Copia archivos a varios hosts simultáneamente
- prsync –> Sincroniza archivos a varios hosts simultáneamente
- pnuke –> Finaliza procesos de varios hosts simultáneamente
- pslurp –> Copia desde varias máquinas a un hosts
Puedes comprobar las herramientas instaladas en /usr/local/bin:
El siguiente paso es crearnos un archivo donde vamos a guardar las ips de los equipos que vamos a administrar, podemos tenerlos divididos en grupos y otro fichero con todos, ya que como veremos, habrá que pasárselo como parámetro a la herramienta. Yo creo uno utilizando nano llamado equipos, con dos ips:
Cuando nos conectamos por ssh se nos pide una contraseña, como aquí nos conectaremos a varios equipos a la vez vamos a necesitar crearnos una llave pública para poder acceder a los equipos sin necesidad de poner contraseñas, ya que la complejidad crecería cuantos mas hosts vayamos a administrar. Cada host necesitaría una contraseña.
Cada ordenador tiene una llave privada, a partir de la cual creamos una pública. Esa pública la copiaremos en los hosts a los que vamos a acceder. Cuando nos conectemos por ssh, nuestro ordenador comprobará si en el destino existe una llave pública que coincida con nuestra llave privada, si es así, nos permitirá el acceso. Explicado de manera simple y muy poco técnica, es como si instaláramos una cerradura en un equipo (con su permiso) de la cual nosotros tenemos una llave.
Nos crearemos una llave pública en el ordenador que administrará a los demás de la siguiente forma:
ssh-keygen –b 4096 –t rsa (rsa es el tipo de llave y 4096 el tamaño en bits de la misma)
Nos pedirá una ruta para guardar la llave y una contraseña para la misma (la podemos quedar en blanco)
Lo siguiente es copiar la llave a las máquinas a administrar:
ssh-copy-id usuario@ipdelhost
Con esto ya podremos trabajar con los hosts sin necesidad de poner contraseñas, a excepción de la que le hayamos dado a la llave, que nos la pedirá la primera vez.
Hablamos ya de las herramientas que nos ocupan. En la ayuda de todos estos comandos se incluye el valor de todos los posibles parámetros.
La primera es pssh:
Con ella podemos ejecutar comandos en varias máquinas al mismo tiempo, y configurar los parámetros que queramos. Con –i le indicamos la salida estándar de muestra como de error, con –h le pasamos el archivo (creado anteriormente) donde tenemos las ips de los equipos a administrar. -l es el usuario con el que accedemos, -o crea un fichero con la salida estándar en la ruta especificada y por último, el comando a ejecutar.
pscp:
Con esta utilidad podemos copiar paralelamente cualquier archivo o carpeta a las máquinas administradas. En el ejemplo hemos copiado “archivo” a /home/iso de ambos ordenadores. Otros posibles parámetros de este comando son, por ejemplo, -r para copiar un directorio recursivamente (con sus subdirectorios y archivos), -e para guardar la salida de error en el directorio que especifiquemos o -v para obtener información del resultado de la copia.
prsync:
Con prsync sincronizamos una carpeta local con otra en los demás hosts. Si no existe, esta se creará, copiando además (parámetro –r) subdirectorios, archivos, permisos o atributos. Sí cambiamos algo en la carpeta de origen y ejecutamos de nuevo el comando, los nuevos cambios se sincronizarán en el destino. Sólo lo nuevo. Una utilidad muy poderosa ya que nos permite,por ejemplo, hacer backups en varios equipos.
pnuke:
pnuke nos sirve para finalizar o matar procesos que se estén ejecutando en varios equipos simultáneamente. En el ejemplo finalizo el programa yes que había lanzado en cada terminal.
pslurp:
Pslurp copia de manera simultánea archivos de los equipos remotos en el nuestro. Cada uno de los archivos es copiado a una carpeta identificativa de cada host y con el nombre que le hayamos asignado. Si no existe, se creará. En este caso, he copiado un archivo llamado archivo1, que existe en los dos equipos (podríamos elegir el archivo de interfaces, por ejemplo, que existe en todas las máquinas) a una carpeta identificada por la ip del host del que hemos copiado, donde se ha creado un subdirectorio llamado copias.
En definitiva, PSSH es una herramienta muy poderosa y que ofrece numerosas ventajas que te pueden ayudar mucho cuando administras más de un equipo paralelamente.