# pussh - 병렬 SSH 명령 실행 도구

> Clean Markdown view of GeekNews topic #20459. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=20459](https://news.hada.io/topic?id=20459)
- GeekNews Markdown: [https://news.hada.io/topic/20459.md](https://news.hada.io/topic/20459.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2025-04-22T09:31:02+09:00
- Updated: 2025-04-22T09:31:02+09:00
- Original source: [github.com/bearstech](https://github.com/bearstech/pussh)
- Points: 5
- Comments: 2

## Summary

이 도구는 여러 서버에서 **병렬로 명령을 실행**할 수 있는 CLI 도구로, 서버 클러스터 관리에 유용합니다. **명령 실행 결과를 파일로 저장**하거나 다른 명령에 파이프 처리할 수 있으며, 입력 제어 기능도 다양하게 지원합니다. **명령이나 스크립트를 원격으로 전송 및 실행**할 수 있으며, 성능 최적화를 위해 SSH 연결 수립 속도와 네트워크 지연을 고려해야 합니다. 이 도구는 2008년부터 사용되어 왔으며, **클라우드 관리 시스템과 연동**되어 실행 가능한 호스트 리스트를 생성할 수 있습니다.

## Topic Body

- Parallel SSH 세션을 통해 여러 서버에서 명령을 동시에 실행할 수 있는 CLI 도구  
- 간단한 사용법부터 고급 입력/출력 제어까지 지원하며, 서버 클러스터 관리에 유용  
  
### 기본 기능  
- 여러 호스트에 명령 실행 하며, 호스트 이름을 프리픽스로 출력  
  - 예: `pussh -h host1,host2 uname -a`  
- 호스트 목록은 파일 또는 표준 입력에서 제공 가능  
  - 예: `pussh -f servers uname -a` 또는 `fetch-servers | pussh -f - uname -a`  
- 출력을 파이프라인에 연결해 정렬하거나 필터링 가능  
  - 예: 디스크 사용량 기준으로 정렬 → `pussh -f servers df -h / | grep /dev | sort -rn -k5`  
- 각 호스트별 출력을 개별 파일로 저장 가능 (`%h`는 호스트 이름 자리)  
  - 예: `pussh -f servers -o %h-hw.txt lshw`  
- SSH 출력 결과를 다른 명령에 파이프 처리 가능  
  - 예: `pussh -f servers -o '|grep feature' command > output`  
  
### 입력 제어 기능  
  
- 명령 실행 시 입력을 파일이나 명령 출력으로 제공 가능  
  - 예: `pussh -f servers -i file command`  
  - 예: 호스트별 입력 파일 → `pussh -f servers -i %h.data command`  
  - 예: 동적 입력 → `pussh -f servers -i 'get-data %h|' command`  
- `-i`와 `-o`는 자유롭게 조합 가능  
  
### 배포 및 실행 기능  
  
- 명령 또는 스크립트를 원격으로 전송 및 실행 가능  
  - 예: `pussh -f servers -u my-deploy.sh args ...`  
  - 단, 실행 파일은 self-contained 형식이거나 대상 서버 환경과 호환되어야 함  
  
### 성능 최적화 팁  
  
- SSH 연결 수립 속도가 전체 실행 시간에 큰 영향을 줌  
- SSH agent의 처리 속도 한계를 초과하면 인증 실패나 연결 오류 발생 가능  
- 권장: 실행 비율(rate)을 설정하여 사용 (예: `alias pussh='pussh -r 50'`)  
- 네트워크 지연이 큰 영향을 미치므로, 원격 LAN 머신에 ssh로 로그인 후 해당 머신에서 pussh 실행 시 더 빠름  
  - 예시 벤치마크 (Gigabit LAN 기준):  
    ```  
    $ time pussh -f servers -r 100 date  
    Total: 201 host(s), 4 second(s)  
  
    real    0m4.069s  
    user    0m7.132s  
    sys     0m3.140s  
    ```  
  
### 개발 및 역사  
- 2008년부터 Bearstech 내부에서 사용되어 온 도구  
- 초기에는 몇 줄의 셸 스크립트였으며, 현재는 500대 이상의 서버 클러스터에서도 안정적으로 동작함  
- 클라우드 관리 시스템과 연동되어 단순한 호스트 설명으로부터 실행 가능한 호스트 리스트를 생성함  
  
### 제한 사항  
- 원격 서버의 stdout과 stderr가 구분되지 않고 한 스트림으로 합쳐져 출력됨  
- 원격 서버에서 실행된 명령의 종료 상태(exit status)를 가져올 수 없음

## Comments



### Comment 37772

- Author: ahwjdekf
- Created: 2025-04-24T23:01:42+09:00
- Points: 1

이름이 불순하다 !

### Comment 37774

- Author: nemorize
- Created: 2025-04-25T02:24:55+09:00
- Points: 1
- Parent comment: 37772
- Depth: 1

I cun't agree more 🤣
