CentOS-Debuginfo.repoに属するワンタイムRPMとパッケージをインストールする必要がある複数のホストがあります。このマシンは現在repoが無効になっており、gpgcheckが有効になっています。すべてがインストールされた後、すべての操作が完了した各システムのホスト名をエコーしながら、一部のパッケージをrpm --nodeps -eする必要があります。
これまで私はこれを持っています:
#!/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
ご覧のとおり、これはかなり醜いです。誰もがよりエレガントなソリューションを持っているのだろうか。
答え1
Clusterssh(csshコマンド)を使用すると、複数のホストに同時にSSHを接続できます。
cssh server1 server2 server3
これにより、何を入力してもアクティブになると、すべての端末に表示されます。