하은양 믿음군 효실맘 호홍홍집s

리눅스 rsync 시 비밀번호 자동입력 처리 쉘 스크립트 expect 본문

가벼운 배움/서버관련

리눅스 rsync 시 비밀번호 자동입력 처리 쉘 스크립트 expect

호홍홍집 2016. 6. 15. 16:16

일반적으로 쉘스크립트( *.sh )를 실행시 비밀번호 입력하는 부분이 있는데
이런 부분을 자동으로 입력해주면 얼마나 고마울까...^^

찾아보니 expect라는 것이 있네요...

참. linux에 expect 가  깔려 있어야 합니다.
참고 : http://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_expect_%EC%84%A4%EC%B9%98
여기 사이트에 가면 까는 방법 있어용!

expect 관련 참조 사이트는
http://bs-secretroom.blogspot.kr/2013/08/expect-tpipe.html

보통 쉘스크립트는

#!/bin/bash
rsync -avz -e 'ssh -p 22' sshUser@XXX.XXX.XXX.XXX:/home/web/data/ /home/web/data/pic_path

위와 같이 작성하면 화면에
[root@home]# sshUser@XXX.XXX.XXX.XXX's password:

라고 물어본다..

이것을 expect를 이용해서 해보자.

#!/usr/bin/expect
spawn bash -c "rsync -avz -e 'ssh -p 22' sshUser@XXX.XXX.XXX.XXX:/home/web/data/ /home/web/data/pic_path";
expect -re "password"
send "사용자비밀번호\r"
interact

spawn bash 를 불러와서 bash 를 이용해서 쉘을 실행한다- 끝에 " ; "
expect -re 를 이용, 암호 및 입력해야할 내용이 발생하는 지점을 찾는다
   => [root@home]# sshUser@XXX.XXX.XXX.XXX's password: 에서 password 라는 부분임...
send 부분에서는 이 암호 및 입력해야할 내용을 입력 후, \r 입력 완료 메시지를 넣고
interact 암호 입력 쉘을 끝낸다