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
그러면 무엇을 입력하든 활성화되면 모든 터미널에 표시됩니다.