안녕하세요. 달소입니다.
이번에도 리눅스 관련 팁으로 돌아왔습니다!
쉘스크립트에서 ssh나 scp를 사용하게되면 키등록을 하지않는 이상 반드시 pw를 물어보는데요.
이걸 스크립트에서 처리하는방법입니다.
expect 설치하기
먼저 상호작용에 필수적인 expect 패키지를 설치해줍니다.
영어 그대로 기대하라는 뜻이 있듯이 특정응답에 따라서 명령어 값을 입력하게 도와줍니다.
ex) ssh 로그인시 password: 라는 응답이 나오듯이요.
설치는 OS에 따라 다릅니다.
Cent/Rocky/Rhel
yum install expect
Ubuntu
apt install expect
예제 스크립트
백문이 불여일견이듯.. 스크립트를 사용해서 이해하는게 가장 빠릅니다.
scp.sh 라는 스크립트를 만들었을때 내용은 아래와 같습니다.
expect는 상호 응답을 기다리는데 맨처름 spawn은 있는그대로의 명령어를 입력하게 해줍니다.
여기서 scp를 통해 접속을 시도하고
password: 라는 응답을 받으면 send를 통해 비밀번호를 넘겨줍니다. 항상 마지막에는 \r을 넣어주세요.
eof는 End-of-file로 파일의 끝을 의미합니다.
#/bin/bash echo "SCP Upload Script" expect << EOF spawn scp -o StrictHostKeyChecking=no scp_upload_test.txt admin-sv@192.168.56.101:/home/admin-sv expect "password:" {send "[비밀번호]\r"} expect eof EOF
잘구동되면 아래처럼 됩니다.
응용한다면 무궁무진하게 사용가능합니다 ㅎㅎ