SSH로 서버에 접속하고 몇 가지 수동 명령을 실행한 후 종료합니다.

SSH로 서버에 접속하고 몇 가지 수동 명령을 실행한 후 종료합니다.

여러 호스트에 순차적으로(병렬이 아닌) SSH로 연결하고 기존 SSH 세션을 종료할 때까지 기다릴 수 있는 스크립트를 생성할 수 있습니까?

호스트가 50명이 넘습니다. 다음과 같이 진행하세요:

  1. SSH 호스트 1
  2. 호스트 1 명령 프롬프트에서 일련의 작업을 수동으로 실행하고 세션을 종료합니다(수동).
  3. 스크립트는 종료를 자동으로 감지하고 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 세션이 끝날 때까지 기다립니다.

관련 정보