티스토리 뷰

expect 스크립트 사용시 주의할 점이 몇가지 있다.

  1. expect 로 받을 argument가 상황에 따라 다른경우.

다음의 sftp를 expect 스크립트로 호출하는 예를 살펴보자.
다음은 sftp를 호출하고 expect 구문으로 자동 로그인을 하는 스크립트다.


sftp를 실행하면 다음과 같은 메세지를 만난다.
Are you sure you want to continue connecting (yes/no)?
yes 를 선택하면
user's password:
이렇게 패스워드를 묻는다.

이렇게 expect argument를 생각하고 개발서버에서 위처럼 쉘을 개발했는데
막상 배포서버와 운영서버에서 적용하고 테스트를 해보니
yes/no 질문은 첫 실행때만 물어보고 두번째 실행부터는 물어보지 않는다.

user's password: 부분도 user's Password: 라고 p가 대문자로 바뀌어서 묻는다.
이럴경우 expect argument가 매칭이 되지 않아서 쉘이 행이 걸려버린다.

그래서 다음과 같이 여러 경우의 argument를 expect {} 커맨드의 중괄호 안에 다 포함을 시켜준다.
명시되어 있지 않은 argument를 만날 경우를 대비해 default 설정도 넣어준다.




이렇게 해두면 yes/no 를 물어보지 않고 바로 password 혹은 Password를 물어봐도 정상적으로 작동하게 된다.


'Linux&Unix > Shell' 카테고리의 다른 글

[Shell] 파일 인코딩 변경  (0) 2018.10.29
SFTP 쉘 파일 전송확인  (0) 2018.09.10
쉘스크립트로 폴더 없으면 생성하기  (0) 2018.08.08
댓글