clusterssh

문서소개

clusterssh는 여러대의 서버에 동시에 접속하여 한꺼번에 여러대의 서버에 명령을 내릴 수 있는 프로그램이다.
kldp 에서 이야기를 주고받다가 정보를 보게 되어 테스팅을 해보았다. http://kldp.org/node/87110

사전 설치준비

http://clusterssh.sourceforge.net/

해당 사이트에서 파일을 다운로드받아서 직접 설치할 수 도 있고 SRPM 파일을 이용하여 RPM으로 만들 수도 있다.

perl 로 되어 있는 프로그램으로 사전에 아래 두가지 펄 모듈이 설치되어 있어야 한다.

        Tk
        X11::Protocol

CPAN을 이용한 펄 모듈을 설치하는 방법에 대해서는 아래 사이트를 참고한다. http://perlmania.or.kr/pmdocs/lcg/cpan_module.html

cpan 명령어를 실행하면 설정을 위하여 몇가지 물어보는 항목이 있으며 잘 모르면 대부분 기본값을 사용하면 된다.
중간에 CPAN의 FTP 사이트(미러 사이트) 선택하는 항목이 나오는데 여기서는 asia-korea 를 선택해주면 된다.

# cpan
cpan shell -- CPAN exploration and modules installation (v1.7601)
ReadLine support enabled
cpan> install Tk
cpan> install X11::Protocol

설치하면서 에러가 났는데 /usr/X11R6/include/ 파일을 찾았고 이 패키지는 xorg-x11-devel 에 해당한다.
그런데 다른 서버에서는 이 패키지가 없어도 설치가 잘 되었다. 아직 펄 패키지 구조에 대해서 잘 몰라서 무엇이 문제인지는 모르겠다.

이제 clusterssh 를 설치하면 된다.

사이트에서 소스를 받아서 아래와 같이 실행하면 된다. configure 에서 --prefix 옵션을 주어서 원하는 디렉토리에 설치할 수 있다.

        $ ./configure
        $ make
        $ make install

SRPM을 이용하여 설치하는 경우이다.
clusterssh-3.19.1-1.src.rpm 파일을 다운로드받았다.

# rpm -ivh clusterssh-3.19.1-1.src.rpm 
# cd /usr/src/redhat/SPECS/
# vi clusterssh.spec

여기서 "Requires: perl-Tk perl-X11-Protocol" 항목이 있는데 해당 모듈을 rpm 으로 설치한것이 아니고 CentOS 에서 기본 제공하지 않는 모듈이므로 이 부분을 주석처리하고 rpm을 만든다.

# rpmbuild -ba clusterssh.spec
# ls /usr/src/redhat/RPMS/noarch/
clusterssh-3.19.1-1.noarch.rpm

이제 이 프로그램을 설치한다.

# rpm -ivh clusterssh-3.19.1-1.noarch.rpm
error: Failed dependencies:
        perl(Tk) >= 800.022 is needed by clusterssh-3.19.1-1.noarch
        perl(Tk::Dialog) is needed by clusterssh-3.19.1-1.noarch
        perl(Tk::LabEntry) is needed by clusterssh-3.19.1-1.noarch
        perl(Tk::Xlib) is needed by clusterssh-3.19.1-1.noarch
        perl(X11::Keysyms) is needed by clusterssh-3.19.1-1.noarch
        perl(X11::Protocol) is needed by clusterssh-3.19.1-1.noarch
        perl(X11::Protocol::Constants) is needed by clusterssh-3.19.1-1.noarch

위와 같이 에러가 나는데 --nodeps 옵션으로 강제설치한다.
프로그램에서 해당 perl 모듈에 대한 의존성을 검사하는 것이 있어서 문제가 생기는 듯한데 앞에서 해당 펄 모듈을 설치했다면 작동에는 문제가 없다.

# rpm --nodeps -ivh clusterssh-3.19.1-1.noarch.rpm
Preparing...                ########################################### [100%]
   1:clusterssh             ########################################### [100%]

# rpm -ql clusterssh
/usr/bin/cssh
/usr/share/applications/clusterssh.desktop
/usr/share/doc/clusterssh-3.19.1
/usr/share/doc/clusterssh-3.19.1/AUTHORS
/usr/share/doc/clusterssh-3.19.1/COPYING
/usr/share/doc/clusterssh-3.19.1/ChangeLog
/usr/share/doc/clusterssh-3.19.1/NEWS
/usr/share/doc/clusterssh-3.19.1/README
/usr/share/icons/hicolor/24x24/apps/clusterssh.png
/usr/share/icons/hicolor/32x32/apps/clusterssh.png
/usr/share/icons/hicolor/48x48/apps/clusterssh.png
/usr/share/man/man1/cssh.1.gz

cssh 사용하기

이제 프로그램을 사용해보자.

# cssh joon@test1.co.kr joon@test2.co.kr

위와 같이 원하는 사용자, 서버이름을 차례대로 입력하면 된다.

여기서 위의 서버, 유저명을 일일이 입력하지 않고 설정파일을 이용할 수 있다.
/etc/clusters 파일에 아래와 같이 지정한다.

<tag> [user@]<server> [user@]<server> [...]

# List of servers in live
live admin1@server1 admin2@server2 server3 server4

이제 cssh live 명령어로 간단히 실행을 할 수가 있다.

설정파일은 /etc/csshrc 또는 $HOME/.csshrc 파일에 둔다.
clusters 옵션을 이용하여 /etc/clusters 파일에 지정한 것 태그를 여러개 한꺼번에 이용하는 것도 가능하다.
man page 를 보면 쉽게 이해가 갈 것이다.