LAN을 통해 연결된 40개의 연구실 컴퓨터에 Java 1.7과 같은 표준 패키지를 설치해야 합니다.
각 시스템의 사용자 공간에 무언가를 설치하기 위해 쉘 스크립트를 작성하면 기본적으로 각 시스템에서 작업을 수행하고 이를 사용자 공간으로 추출할 수 있다는 것을 알고 있지만 scp
한 시스템에서 다른 시스템으로 패키지를 설치하려면 어떻게 해야 합니까? 루트 액세스가 필요한 시스템 ?
예, 각 시스템에 대한 루트 액세스 권한이 있지만 단일 시스템에서 네트워크 설치를 제어하여 네트워크 설치를 자동화하는 방법을 모르겠습니다.
답변1
먼저 SSH 키를 사용하여 로그인을 자동화한 다음 루프에서 설치 명령을 실행하는 스크립트를 작성해야 합니다. 또한 다른 모든 시스템에 로그인할 수 있는 시스템을 사용해야 합니다.
먼저 cd
홈 디렉터리로 이동하여 SSH 키를 만듭니다.
cd
mkdir -p .ssh
cd .ssh
키를 생성하여 다른 모든 시스템에 복사
ssh-keygen
공개 키를 원격 시스템에 복사
ssh-copy-id -i ~/.ssh/id_rsa.pub root@remotesys1
ssh-copy-id -i ~/.ssh/id_rsa.pub root@remotesys2
...
ssh-copy-id -i ~/.ssh/id_rsa.pub root@remotesys40
Remotesys1에 대한 DNS가 없으면 IP를 사용할 수 있습니다.
모든 시스템 이름 또는 IP를 포함하는 파일을 생성합니다.systems.txt
remotesys1
remotesys2
..
remotesys40
다음 스크립트를 실행하고 "./install.sh"를 설치한 명령으로 변경하세요.
for system in $(cat systems.txt ) ; do echo $system ; ssh $system "./install.sh" ; done