ssh를 사용하여 여러 원격 호스트에서 임의의 명령을 실행하고 싶습니다. 이 명령은 주로 (같은 서버 자원을 모니터링하고 내 로컬 워크 스테이션에 출력을 집계 장기 실행 명령입니다 tail -f
, mpstat
또는 tcpdump
/ tcpflow
로 grep
등).
문제는 나중에 모든 호스트에 대한 SSH 연결과 원격 명령을 안정적으로 종료하면서 명령을 계속 실행하는 방법을 찾지 못했다는 것입니다.
나는 많은 ssh
플래그 변형, 대기, 고양이, 읽기, 트랩 등을 시도했습니다 ... 둘 다 즉시 죽거나 로컬 터미널이 멈추거나 ssh 연결이 종료 된 후 원격 호스트에서 원격 명령이 계속 실행됩니다.
이것이 내가 지금 가지고있는 것입니다.
function server_ssh() {
pids=""
for box in 01 02 03; do
ssh -t -t -f server$box "$1" &
pids="$pids $!"
done
trap 'kill -9 $pids' SIGINT
# wait, cat, read ??
}