5P by xguru 3일전 | ★ favorite | 댓글 2개
  • 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)를 가져올 수 없음

이름이 불순하다 !

I cun't agree more 🤣