SSH em múltiplos servidores executando múltiplos comandos [duplicados]

1

Eu tenho vários hosts que precisam ter um único RPM instalado, bem como pacotes pertencentes ao CentOS-Debuginfo.repo. Atualmente, essas máquinas têm o repositório desativado e o gpgcheck ativado. Depois que tudo foi instalado, eu preciso de rpm --nodeps -e alguns pacotes, o tempo todo ecoando o hostname de cada máquina que tudo isso foi feito.

Até agora, tenho isto:

#!/bin/bash
# SSH to hosts, then grab the GTS RPM and install it.  Yum install required debugging packages, then rpm to erase unnneeded ones.

cmds="echo $HOSTNAME; cd /tmp && wget http://download.sipxcom.org/pub/epel.bak/6/x86_64/gts-0.7.6-19.20111025.el6.x86_64.rpm /tmp; rpm -i /tmp/gts-0.7.6-19.20111025.el6.x86_64.rpm; yum --enablerepo debug --nogpg install -y db4-debuginfo.x86_64 expat-debuginfo.x86_64 glibc-debuginfo.x86_64 kernel-devel.x86_64 nss-softokn-debuginfo.x86_64 openssl-debuginfo.x86_64 python-debuginfo.x86_64 readline-debuginfo.x86_64 zlib-debuginfo.x86_64; for i in $(cat /tmp/testing/rpms_to_erase.txt); do rpm -e $i; done"
hostlist=/tmp/testing/hostlist.txt

for i in $HOSTLIST
  do
    ssh -qn $i "bash $CMDS" && "rpm -e gdm-plugin-fingerprint.x86_64 gdm-user-switch-applet.x86_64 gnome-applets.x86_64"
  done

Como você pode ver, isso é muito feio. Imaginando se alguém pode ter uma solução mais elegante.

    
por loadedmind 03.03.2017 / 18:39

1 resposta

2

Clusterssh (comando cssh) permite que você ssh para vários hosts de uma só vez

cssh server1 server2 server3

e depois o que você digitar, ele aparece em todos os terminais, uma vez ativo.

    
por 03.03.2017 / 19:36

Tags