it-swarm-ko.tech

Linux-한 번에 여러 시스템에서 동일한 명령 실행

때때로 동일한 명령을 실행해야하는 약 12 ​​개의 Linux 상자가 있습니다. 각 머신에 로그온하고 한 번에 하나씩 명령을 실행하는 것 외에는 더 쉬운 방법 (또는 자동화 된 방법)이 있습니까? 항상 같은 명령이 아니며 사전 설정 시간이 아니므로 cron와 같은 도구에는 이상적이지 않습니다.

39
Chris Bunch

흠, 아마도 pconsole 은 당신이 원하는 도구입니다.

12
Node

ClusterSSH 도 있습니다. 정확히 당신이 생각하는 것을 수행합니다. 설명이 포함 된 이름입니다.

15
Jörg W Mittag

psshdsh 도 간과하지 마십시오. 그들은 @Philip Durbin이 언급 한 gsh와 매우 흡사합니다.

8
pjz

Capistrano 를 시도 할 수 있습니다. 원래이 도구는 Rails 배포 도구)이지만 원격 컴퓨터에서 많은 작업을 수행했습니다.

여러 머신을보다 완벽하게 관리하려면 Chef 를 사용해보십시오.

8
rkj

Ansible은 임시 명령을 수행 할 수 있으며 전체 구성 관리를 수행하도록 확장 할 수도 있습니다. 그룹별로 일치하는 능력이 우수합니다.

http://docs.ansible.com/intro_adhoc.html

8
Robert

여기서 꼭두각시를 확인해야합니다. linux.com article 설정 및 사용

8
trent

사람들이 좋아하는 것처럼 내 답변을 Stack Overflow 복사하여 붙여 넣을 것 같습니다. . .


한 번에 많은 서버에서 명령을 실행하는 방법에 대한 문제는 다른 날에 Perl 메일 링리스트에 나타 났으며, gsh를 사용하는 것과 동일한 권장 사항 I give there 을 줄 것입니다 : = http : //outflux.net/unix/software/gsh

gsh는 "for box in box1_name box2_name box3_name "솔루션이 이미 제공되었지만 gsh가 더 편리하다는 것을 알았습니다. 웹, db, RHEL4, x86_64 또는 기타 (맨 고스트)와 같은 그룹으로 서버를 포함하는/etc/ghosts 파일을 설정 한 다음 해당 그룹을 사용합니다. gsh를 호출하면.

[[email protected] ~]$ gsh web "cat /etc/redhat-release; uname -r"
www-2.foo.com: Red Hat Enterprise Linux AS release 4 (Nahant Update 7)
www-2.foo.com: 2.6.9-78.0.1.ELsmp
www-3.foo.com: Red Hat Enterprise Linux AS release 4 (Nahant Update 7)
www-3.foo.com: 2.6.9-78.0.1.ELsmp
www-4.foo.com: Red Hat Enterprise Linux Server release 5.2 (Tikanga)
www-4.foo.com: 2.6.18-92.1.13.el5
www-5.foo.com: Red Hat Enterprise Linux Server release 5.2 (Tikanga)
www-5.foo.com: 2.6.18-92.1.13.el5
[[email protected] ~]$

예를 들어 web + db 또는 web-RHEL4를 사용하여 고스트 그룹을 결합하거나 분할 할 수도 있습니다.

또한 shmux를 사용하지는 않았지만 its website 여러 서버에서 한 번에 명령을 실행할 수있는 소프트웨어 목록 (gsh 포함)이 포함되어 있습니다. Capistrano 이미 언급되었으며 (내가 이해 한 것)도 그 목록에있을 수 있습니다.

6
Philip Durbin

KDE 데스크톱에있는 경우 konsole에는 "모든 세션에 입력 보내기"옵션이 있습니다. 동일한 곤솔 창에서 열린 모든 세션에 적용됩니다.

5
rgmarcha

ssh [[email protected]]hostname [command] 다음 호스트 이름을 반복합니다.

5
Jason V.

Func도 살펴보십시오. Func는 모듈 아키텍처를 사용하여 패키지 처리, 명령 실행 등 시스템의 다양한 측면을 제어 할 수 있습니다. SSL을 통한 클라이언트/서버 모듈에서 작동하며 상당히 유연한 인증 체계를 가지고 있습니다.

4
Stick

이미 tmux 사용자 인 경우 tmux-cssh (TMUX-C(luster)-SSH의 약자)를 즐길 수 있습니다. 서버 이름 목록을 제공하고 자체 분할 창의 각 서버에 SSH 세션이 열린 새 tmux 창을 엽니 다. 모든 키 입력이 각 창에 복사됩니다. 호스트 수에 따라 출력을 읽기 어려울 수 있습니다.

4
appleshampoo

ClusterSSH를 사용했으며 작동합니다. 그러나 특정 수의 터미널을 넘어 서면 확장 성이 떨어집니다.

아무도 xargs를 언급하지 않은 것에 놀랐습니다. Xargs는 대부분의 경우에 적합합니다. 사실, 나는 더 이상 clusterssh를 사용하지 않을 정도로 편안해졌습니다.

echo -n Host1 Host2 Host3 Host4|xargs -d" " -n1 -P30 -I+ ssh + "Sudo service Apache2 restart"

(모든 웹 호스트에서 Apache를 다시 시작하십시오.)

4
JDS

다른 도구는 다음과 같습니다.

RunDeck은 가벼운 ControlTier로 묘사 될 수도 있습니다.

이러한 도구는 클러스터 셸뿐만 아니라 웹 프런트 엔드를 제공하며 나중에 사용하기 위해 작업을 저장할 수 있습니다.

3
Christian

클러스터 SSH (cssh)를 시도 할 수도 있습니다. 나는 그것을 사용하지는 않았지만 LinuxJournal.com에는 "여러 서버를 효율적으로 관리"라는 기사가있다.

2
Brad Beyenhof

다른 답변에서 언급 한 명령을 사용한 몇 가지 예는 다음과 같습니다.

pdsh

숫자 범위를 취할 수 있으며 호스트 이름이 먼저 출력되면 실제로는 유지 관리되는 것처럼 보입니다 .

가장 간단한 버전 :

pdsh -w hostname echo done

산출:

hostname: done

더 복잡한 예 :

pdsh -w [email protected][7-8],[email protected] "sleep 5 && echo done"

산출:

hostname8: done
hostname7: done
otherhost: done

맥: brew install pdsh

dsh

dsh -m [email protected],[email protected] --remoteshell ssh --concurrent-Shell -- "sleep 5 && echo done"

그렇지 않으면 원격 쉘 설정이 필요합니다. 그렇지 않으면 "rsh"를 사용하거나 사용하지 못할 수도 있습니다.

맥: brew install dsh

pssh

pssh -i -H [email protected] -H [email protected] "sleep 5 && echo done"

선택적으로 파일에서 머신 목록을 모두 가져올 수 있습니다.

여기에 더 많은 예제를 추가하십시오. 커뮤니티 위키입니다.

맥: brew install pssh

클러스터 SSH

클러스터 SSH ( "mac only version"은 분명히 두 가지 버전이 있습니다. 다른 버전은 here )은 실제로 다른 터미널에 입력을 보내는 맨 아래에 큰 터미널이있는 "실제 터미널"을 엽니 다. 여러 UI로 보내는 UI와 같습니다.

전의:

csshX hostname0[1-2] hostname3 그런 다음 빨간색 상자에 입력하면 각 터미널 창 (호스트 당 하나씩)으로 이동하여 팝업됩니다.

맥: brew install csshx (이전 버전이지만 여전히 작동 함)

또 한있다 brew install ansible FWIW

1
rogerdpack

간단하고 매우 강력한 접시 를 사용하십시오! 이 스크립트는 내 인생을 바꿨습니다.

http://nic-nac-project.org/~drimiks/gnu/dish.shtml

Diligence Shell 'dish'는 여러 시스템에서 ssh/rsh/telnet/mysql을 통해 동시에 명령을 실행합니다. 그러면 수백 개의 노드에서 비밀번호 변경, 구성 업데이트, 파일 복사, 상태 확인 등이 간단 해집니다. Dish는 IBM의 'dsh'(분산 쉘)와 유사하지만 인증이 필요한 명령을 원격으로 실행할 수 있습니다. ClusterIt, 댄서 셸, 병렬 분산 셸 또는 C3과 같은 분산 셸 (또는 유사한 도구)을 포함하는 다른 오픈 소스 패키지와 비교할 때 접시는 유연한 솔루션이 필요한 경우 슬림하고 사용하기 쉬운 원격 셸 래퍼입니다. 요리 매뉴얼 페이지를 온라인으로 검색 할 수 있습니다.

1
Guillaume