Diferencia entre revisiones de «PSSH / PSCP»
Sin resumen de edición |
|||
| Línea 3: | Línea 3: | ||
En esta página se muestran ejemplos prácticos del uso de '''pssh''' y '''pscp''' para la ejecución | En esta página se muestran ejemplos prácticos del uso de '''pssh''' y '''pscp''' para la ejecución | ||
de comandos y copia de ficheros de forma paralela en múltiples servidores Linux. | de comandos y copia de ficheros de forma paralela en múltiples servidores Linux. | ||
=== Buenas prácticas === | |||
* Probar primero con un único servidor | |||
* Usar <code>-p 1</code> para evitar impactos masivos | |||
* Redirigir salidas con <code>-o</code> y <code>-e</code> | |||
* Validar scripts antes de ejecutarlos en paralelo | |||
* Usar inventarios claros y controlados | |||
=== Notas finales === | |||
pssh y pscp son herramientas muy potentes para administración masiva. | |||
Un uso incorrecto puede provocar impactos en múltiples sistemas al mismo tiempo. | |||
Utilizarlas siempre con precaución. | |||
Todos los ejemplos asumen acceso por SSH y privilegios de <code>root</code> o <code>sudo</code>. | Todos los ejemplos asumen acceso por SSH y privilegios de <code>root</code> o <code>sudo</code>. | ||
== pssh – Ejecución remota en paralelo == | == pssh – Ejecución remota en paralelo == | ||
| Línea 12: | Línea 24: | ||
'''pssh''' permite ejecutar comandos simultáneamente en múltiples servidores definidos en un fichero. | '''pssh''' permite ejecutar comandos simultáneamente en múltiples servidores definidos en un fichero. | ||
=== Copiar un fichero de configuración de forma masiva === | === Copiar un fichero de configuración de forma masiva === | ||
| Línea 19: | Línea 30: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
pssh -X -q -h servers.lst -i | pssh -X -q -h servers.lst -i "sudo cp /etc/sudoers.serverA /etc/sudoers" | ||
"sudo cp /etc/sudoers.serverA /etc/sudoers" | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Buscar configuración en múltiples servidores === | === Buscar configuración en múltiples servidores === | ||
| Línea 30: | Línea 38: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
pssh -X -q -h servers.lst -i | pssh -X -q -h servers.lst -i "sudo grep X11 /etc/ssh/sshd_config" | ||
"sudo grep X11 /etc/ssh/sshd_config" | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Ejecutar un script remoto === | === Ejecutar un script remoto === | ||
| Línea 41: | Línea 47: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
pssh -X -q -h servers.lst | pssh -X -q -h servers.lst -o out_umount -e err_umount -i "sudo /tmp/umount.sh" | ||
-o out_umount -e err_umount -i | |||
"sudo /tmp/umount.sh" | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Controlar salida estándar y errores === | === Controlar salida estándar y errores === | ||
| Línea 53: | Línea 55: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
pssh -X -q -h servers.lst | pssh -X -q -h servers.lst -o info/ -e error/ -p 1 "sudo date" | ||
-o info/ -e error/ -p 1 | |||
"sudo date" | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Desactivar THP (Transparent Huge Pages) === | === Desactivar THP (Transparent Huge Pages) === | ||
| Línea 65: | Línea 63: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
pssh -X -q -h servers.lst | pssh -X -q -h servers.lst -O StrictHostKeyChecking=no -t 300 -p 1 "sudo sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/defrag'" | ||
-O StrictHostKeyChecking=no -t 300 -p 1 | |||
"sudo sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/defrag'" | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Consultas sobre usuarios y permisos === | === Consultas sobre usuarios y permisos === | ||
| Línea 77: | Línea 72: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
pssh -X -q -h servers.lst -i | pssh -X -q -h servers.lst -i "sudo grep -i redis /etc/sudoers" | ||
"sudo grep -i redis /etc/sudoers" | |||
</syntaxhighlight> | </syntaxhighlight> | ||
| Línea 84: | Línea 78: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
pssh -X -q -h servers.lst -i | pssh -X -q -h servers.lst -i "getent passwd | grep 10188" | ||
"getent passwd | grep 10188" | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Ejecución autenticada y en serie === | === Ejecución autenticada y en serie === | ||
| Línea 95: | Línea 86: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
pssh -h servers.lst -p 1 -A -P | pssh -h servers.lst -p 1 -A -P "pip3 list | grep google-api-python-client" | ||
"pip3 list | grep google-api-python-client" | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== pscp – Copia de ficheros en paralelo == | == pscp – Copia de ficheros en paralelo == | ||
| Línea 105: | Línea 93: | ||
'''pscp''' permite copiar archivos a múltiples servidores de forma simultánea. | '''pscp''' permite copiar archivos a múltiples servidores de forma simultánea. | ||
=== Copiar un script a /tmp === | === Copiar un script a /tmp === | ||
| Línea 119: | Línea 106: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
pscp -h servers.lst \ | pscp -h servers.lst \ | ||
-o out_copy -e err_copy | -o out_copy -e err_copy isilon_fstab_mod.sh /tmp | ||
isilon_fstab_mod.sh /tmp | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Copiar a distintos grupos de servidores === | === Copiar a distintos grupos de servidores === | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
pscp -h servers_group2.lst | pscp -h servers_group2.lst -o out_copy -e err_copy umount.sh /tmp | ||
-o out_copy -e err_copy | |||
umount.sh /tmp | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Revisión del 16:14 2 ene 2026
Uso de pssh y pscp
En esta página se muestran ejemplos prácticos del uso de pssh y pscp para la ejecución de comandos y copia de ficheros de forma paralela en múltiples servidores Linux.
Buenas prácticas
- Probar primero con un único servidor
- Usar
-p 1para evitar impactos masivos - Redirigir salidas con
-oy-e - Validar scripts antes de ejecutarlos en paralelo
- Usar inventarios claros y controlados
Notas finales
pssh y pscp son herramientas muy potentes para administración masiva. Un uso incorrecto puede provocar impactos en múltiples sistemas al mismo tiempo. Utilizarlas siempre con precaución.
Todos los ejemplos asumen acceso por SSH y privilegios de root o sudo.
pssh – Ejecución remota en paralelo
pssh permite ejecutar comandos simultáneamente en múltiples servidores definidos en un fichero.
Copiar un fichero de configuración de forma masiva
Ejecuta un comando cp en todos los servidores del listado:
pssh -X -q -h servers.lst -i "sudo cp /etc/sudoers.serverA /etc/sudoers"
Buscar configuración en múltiples servidores
Buscar la opción X11 en la configuración SSH:
pssh -X -q -h servers.lst -i "sudo grep X11 /etc/ssh/sshd_config"
Ejecutar un script remoto
Ejecutar un script previamente copiado en /tmp:
pssh -X -q -h servers.lst -o out_umount -e err_umount -i "sudo /tmp/umount.sh"
Controlar salida estándar y errores
Guardar la salida estándar y errores en directorios separados:
pssh -X -q -h servers.lst -o info/ -e error/ -p 1 "sudo date"
Desactivar THP (Transparent Huge Pages)
Ejecutar un comando protegido con sh -c:
pssh -X -q -h servers.lst -O StrictHostKeyChecking=no -t 300 -p 1 "sudo sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/defrag'"
Consultas sobre usuarios y permisos
Buscar una entrada concreta en /etc/sudoers:
pssh -X -q -h servers.lst -i "sudo grep -i redis /etc/sudoers"
Buscar un usuario por UID:
pssh -X -q -h servers.lst -i "getent passwd | grep 10188"
Ejecución autenticada y en serie
Ejecutar un comando uno a uno (-p 1) solicitando contraseña:
pssh -h servers.lst -p 1 -A -P "pip3 list | grep google-api-python-client"
pscp – Copia de ficheros en paralelo
pscp permite copiar archivos a múltiples servidores de forma simultánea.
Copiar un script a /tmp
pscp -h servers.lst -o out_copy -e err_copy umount.sh /tmp
---
Copiar scripts de mantenimiento
pscp -h servers.lst \
-o out_copy -e err_copy isilon_fstab_mod.sh /tmp
Copiar a distintos grupos de servidores
pscp -h servers_group2.lst -o out_copy -e err_copy umount.sh /tmp