728x90
#!/bin/sh
USER=root
IP=000.000.000
PW=p@sswOrD
# install expect - important#
expect -c "
spawn ssh -o StrictHostKeyChecking=no $USER@$IP 'example.sh'
expect 'password:'
send \"$PW\\r\"
expect eof
set timeout 3
"
위에서 부터 하나씩 해석을 해보자면,
#!/bin/bash
위 코드는 해당 파일을 bash 쉘로 실행시킨다는 것을 정의하는 것이고.
USER, IP, PW 변수로 선언하여 초기화하였다.
여기서부터가 중요한대.
expect -c "
우리는 expect라는 모듈을 이용할 것이다.
expect 모듈은 커맨드 대화를 상호작용할 수 있도록 도와주는 모듈인데
우리는 비밀번호를 물어보는 질문은 던졌을때 그에 대해 답할 때 쓰이게 된다.
spawn ssh -o StrictHostKeyChecking=no $USER@$IP 'example.sh'
expect 'password:'
send \"$PW\\r\"
ssh -o StrictHostKeyChecking=no $USER@$IP 'example.sh' 이 구문은
ssh -o StrictHostKeyChecking=no $USER@$IP 변수로 선언된 USER와 IP에 해당하는 서버에 접속 한다는 의미이고,
example.sh는 접속하는 원격서버에 파일을 접속하고 바로 실행시킨다는 의미이다. 이 해당 파일을 기입하지 않아도 된다.
그리고.. 서버 접속시 비밀번호를 물어보게 된다...
이때! expect를 사용한다.
'password:' 라는 질문이 던져오면 send "$PW" 변수 PW를 답을 줘서 해당 서버에 접속한다.
expect eof
"
이렇게 expect가 종료된다.
728x90
'Server > Linux' 카테고리의 다른 글
[nginx] autoindex로 디렉토리 리스팅 하였을 때 cors 에러 (0) | 2023.04.10 |
---|---|
[Linux] Shell Script(쉘 스크립트) 프로그램 및 패키지 설치 여부 확인 (0) | 2022.12.08 |
[Linux] 리눅스 타임존(TimeZone, TZ) 한국 표준시(KST)로 변경하기 (0) | 2022.11.29 |
[SSL] Oracle linux server에서 let's encrypt로 nginx에 SSL 적용하기 (인증서 자동 갱신 포함) (0) | 2022.06.14 |
[linux] nginx 사용시 proxy_pass 연결 안되는 경우 해결법 (0) | 2022.03.30 |
댓글