여러 장치에서 SSH를 통해 여러 명령 자동화

여러 장치에서 SSH를 통해 여러 명령 자동화

동일한 사용자 이름과 비밀번호를 사용하고 SSH가 활성화된 장치가 100개가 넘습니다.

내가 달성하고 싶은 것은 각 장치에 대해 동일한 명령을 실행하여 일괄적으로 암호를 변경하고 싶다는 것입니다.

내가 한 일은 2개의 파일을 만드는 것이었습니다. 첫 번째 파일에는 호스트가 포함되어 있고 두 번째 파일에는 명령이 포함되어 있습니다.

호스트 파일 예;

192.168.1.20
192.168.1.21
192.168.2.30
192.168.2.31

명령 파일;

passwd -a des
%new-password%
%new-password%
grep -v users.1.password= /tmp/system.cfg > /tmp/system.cfg.new
echo users.1.password=`grep %user% /etc/passwd | awk -F: '{print $2}'` >> /tmp/system.cfg.new
cfgmtd -f /tmp/system.cfg.new -w
exit

다음 명령을 실행하려고 시도했지만 두 가지 이유로 실패했습니다.

1 - 매번 자체 서명 키를 허용할지 묻는 메시지가 표시됩니다. 2 - 입력 섹션에 멈춤

for host in $(cat hosts.txt); do ssh -u username@"$host" -pPasswd command.txt >"output.$host"; done

따라서 기본적으로 모든 장치(모두 서로 다른 자체 서명 인증서가 있음)를 연결하고 이에 따라 암호를 변경하고 싶습니다.

감사해요!

답변1

나는 사용할 것이다안시푸르. Ansible은 여러 장치에서 SSH를 사용하여 명령을 실행하도록 설계되었습니다. Ansible 셸을 사용하여 한 번에 하나의 명령을 실행하거나 Ansible 플레이북을 사용하여 여러 명령을 함께 실행할 수 있습니다.

Ansbile을 설치, 설정, 실행하는 것을 원치 않으시면 두 부분으로 나누어서 설명하겠습니다. scp 스크립트를 작성하면 스크립트를 모든 호스트(예: /tmp 디렉터리)로 보낼 수 있습니다. 그런 다음 스크립트를 다시 실행하십시오. 스크립트가 백그라운드(nohup)에서 실행되고 출력이 로컬 장치에 기록되는지 확인하세요. 로그/성공을 확인하는 세 번째 스크립트일 수도 있습니다.

관련 정보