- Herramienta CLI que permite ejecutar comandos simultáneamente en varios servidores mediante sesiones SSH en paralelo
- Soporta desde un uso simple hasta control avanzado de entrada/salida, y es útil para administrar clústeres de servidores
Funciones básicas
- Ejecuta comandos en múltiples hosts y muestra la salida con el nombre del host como prefijo
- Ejemplo:
pussh -h host1,host2 uname -a
- La lista de hosts puede proporcionarse desde un archivo o desde la entrada estándar
- Ejemplo:
pussh -f servers uname -a o fetch-servers | pussh -f - uname -a
- La salida puede conectarse a un pipeline para ordenarla o filtrarla
- Ejemplo: ordenar por uso de disco →
pussh -f servers df -h / | grep /dev | sort -rn -k5
- Es posible guardar la salida de cada host en archivos individuales (
%h representa el nombre del host)
- Ejemplo:
pussh -f servers -o %h-hw.txt lshw
- La salida SSH puede canalizarse hacia otros comandos
- Ejemplo:
pussh -f servers -o '|grep feature' command > output
Funciones de control de entrada
- Al ejecutar un comando, la entrada puede suministrarse desde un archivo o desde la salida de otro comando
- Ejemplo:
pussh -f servers -i file command
- Ejemplo: archivo de entrada por host →
pussh -f servers -i %h.data command
- Ejemplo: entrada dinámica →
pussh -f servers -i 'get-data %h|' command
-i y -o pueden combinarse libremente
Funciones de despliegue y ejecución
- Es posible transferir y ejecutar comandos o scripts de forma remota
- Ejemplo:
pussh -f servers -u my-deploy.sh args ...
- Sin embargo, el ejecutable debe ser self-contained o compatible con el entorno del servidor de destino
Consejos de optimización de rendimiento
- La velocidad al establecer conexiones SSH tiene un gran impacto en el tiempo total de ejecución
- Si se supera el límite de velocidad de procesamiento del SSH agent, pueden ocurrir fallos de autenticación o errores de conexión
- Recomendación: usar una tasa de ejecución (rate) configurada (ejemplo:
alias pussh='pussh -r 50')
- Como la latencia de red influye mucho, suele ser más rápido iniciar sesión por ssh en una máquina dentro de la LAN remota y ejecutar pussh desde ahí
Desarrollo e historia
- Herramienta usada internamente en Bearstech desde 2008
- Al principio era un script de shell de unas pocas líneas, y hoy funciona de forma estable incluso en clústeres de más de 500 servidores
- Se integra con sistemas de administración en la nube para generar listas de hosts ejecutables a partir de descripciones simples de hosts
Limitaciones
- En el servidor remoto, stdout y stderr no se distinguen y se combinan en un solo stream de salida
- No es posible obtener el estado de salida (
exit status) del comando ejecutado en el servidor remoto
2 comentarios
¡El nombre se presta a malas interpretaciones!
No podría estar más de acuerdo 🤣