
이것이 내가 하고 싶은 일이다. 여러 호스트에 분산된 서비스에 대한 .service 파일 세트가 있습니다. 스크립트를 실행할 때 각 호스트의 루트 비밀번호를 입력하지 않고도 모든 서비스를 시작하거나 중지할 수 있는 쉘 스크립트를 작성하고 싶습니다.
예를 들어 스크립트는 다음 명령을 실행합니다.
systemctl -H host1 start service1.service
--no-ask-password 옵션이 있지만 이는 systemctl을 실행하기 위해 운영 체제를 인증하는 대신 서비스 장치에서 요청할 때 비밀번호를 묻거나 제공하지 않기 때문에 다릅니다.
즉, 다른 인증 방법이 다른 호스트에서 동일한 사용자를 자동으로 인증할 수 없는 상황에서 비밀번호를 지정해 보려고 합니다(예: -P {passwd} 옵션이 있는 경우).
누구든지 내가 이것을 달성할 수 있는 방법에 대한 아이디어를 가지고 있습니까?
답변1
"명령줄에 비밀번호를 입력하는 것"은 매우 나쁜 생각입니다. ssh
이것을 처리할 수 있습니다.
man
에서 제작한 많은 페이지를 읽어보세요 man -k ssh
.
그런 다음 일단 실행하면 다음과 ssh
같습니다 ssh-add
.
man ssh-copy-id
각 클라이언트 노드에 ID를 복사하려면 읽어보세요 .ssh
root
이제 ssh -l root client1 systemctl ...
사용할 수 있습니다.
자동화를 더욱 발전시키려면 계속 읽어보세요 man ssh_config
.
예를 들어 별칭을 추가하세요.
alias c1="ssh -l root client1"
# usage: c1 systemctl ...
#
alias c1sys= "ssh -l root client1 systemctl ..."
당신을 위한 ~/.bashrc
.