여러 호스트에 순차적으로(병렬이 아닌) SSH로 연결하고 기존 SSH 세션을 종료할 때까지 기다릴 수 있는 스크립트를 생성할 수 있습니까?
호스트가 50명이 넘습니다. 다음과 같이 진행하세요:
- SSH 호스트 1
- 호스트 1 명령 프롬프트에서 일련의 작업을 수동으로 실행하고 세션을 종료합니다(수동).
- 스크립트는 종료를 자동으로 감지하고 SSH를 통해 다음 호스트에 연결합니다.
rhel 6.x의 기존 도구를 활용해 보십시오. 내장된 도구를 사용하여 이 작업을 수행한 사람이 있는지 궁금합니다.
다음과 같이 할 수 있습니다. 하지만 작업이 완료될 때까지 스크립트가 기다리게 만드는 방법만 알면 됩니다.
usr=test
svrs=("192.168.18.48" "192.168.191.237" )
for x in ${!svrs[*]} ; do
ip=`echo ${svrs[x]}`
ssh $usr@$ip
done
답변1
그게 바로 그것입니다.
셸의 관점에서 ssh $usr@$ip
이는 사용자와 상호 작용할 수 있는 다른 프로그램을 시작하는 것과 다르지 않습니다. 프로그램의 입력과 출력이 리디렉션되지 않고 프로그램이 백그라운드에서 실행되지 않기 때문에 프로그램은 원하는 대로 사용자와 상호 작용할 수 있습니다.
"작업이 완료될 때까지 스크립트를 기다리게 하기" 위해 특별한 작업을 수행할 필요는 없습니다. 스크립트는 "ssh" 명령이 완료될 때까지, 즉 SSH 세션이 끝날 때까지 기다립니다.