사용자 도구

사이트 도구


linux:expect

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
linux:expect [2015/03/21 18:46]
kwon37xi
linux:expect [2017/07/24 09:01] (현재)
kwon37xi
줄 2: 줄 2:
   * [[http://linux.die.net/man/1/expect|expect(1) - Linux man page]]   * [[http://linux.die.net/man/1/expect|expect(1) - Linux man page]]
   * shell script를 자동화 해주는 툴이다.   * shell script를 자동화 해주는 툴이다.
 +  * [[https://github.com/pexpect/pexpect|Python pexpect]]로도 유사한 작업이 가능하다.
   * [[http://www.thegeekstuff.com/2010/10/expect-examples/|6 Expect Script Examples to Expect the Unexpected (With Hello World)]]   * [[http://www.thegeekstuff.com/2010/10/expect-examples/|6 Expect Script Examples to Expect the Unexpected (With Hello World)]]
-  * ''sshpass''와 함께 사용하여 로그인 자동화가 가능하다.+  * [[http://ktdsoss.tistory.com/149|ktds OpenSource Group :: [UNIX/LINUX] 자동화를 위한 interactive 스크립트 - expect (1) 기본 사용법]] 
 +  * [[http://ktdsoss.tistory.com/151|ktds OpenSource Group :: [UNIX/LINUX] 자동화를 위한 interactive 스크립트 - expect (2) 예제]] 
 +  * [[http://www.thegeekstuff.com/2011/01/expect-expressions-loops-conditions/|Expect Script Tutorial: Expressions, If Conditions, For Loop, and While Loop Examples]] 
 +  * ''sshpass''와 함께 혹은 대신 사용하여 로그인 자동화가 가능하다. 
 +    * ''sshpass -f  파일경로'' 사용시 파일 경로에 ''~''로 사용자 디렉토리 지칭하는 것이 작동하지 않았다. 
 ===== 기본 명령 ===== ===== 기본 명령 =====
   * ''spawn 명령어'' : 명령어를 실행한다.   * ''spawn 명령어'' : 명령어를 실행한다.
줄 12: 줄 18:
   * ''send "$변수"'' : 변수에 저장된 문자열을 전송한다.   * ''send "$변수"'' : 변수에 저장된 문자열을 전송한다.
   * ''expect eof'' : expect 종료   * ''expect eof'' : expect 종료
 +
 +===== expect 구문 옵션 =====
 +  * ''-nocase'' : 대소문자 구별안함
  
 ===== ssh login example ===== ===== ssh login example =====
줄 29: 줄 38:
 </code> </code>
  
 +===== sh shell script 안에서 호출 =====
 +<code sh>
 +#!/bin/bash
 +# 원하는 bash script 작업
  
 +SOME_ENV_VAR1="값"
 +SOME_ENV_VAR2="값2"
  
 +expect <<EOF
 +# expect script들 기록
 +# "$SOME_ENV_VAR1", "$SOME_ENV_VAR2" 형태로 shell script의 변수 사용가능
 +
 +expect eof 
 +EOF
 +
 +# 이제 다시 원하는 셸 스크립트 작업
 +</code>
 +  * ''%%<<%%EOF'' 방식을 사용하면 STDIN이 이걸로 소진돼 버려서 ''interact''가 작동하지 않는다. 이 경우에는 ''-f expect명령모음파일명'' 옵션으로 외부 파일로 expect 스크립트를 빼두면 된다.
 +  * ''expect -f 파일명 옵션1 옵션2'' 등으로 실행하고 ''set 변수명 [lindex $argv 0]'' 혹은 숫자 1 등으로 바꿔가면서 옵션을 전달할 수 있다.
  
linux/expect.1426931198.txt.gz · 마지막으로 수정됨: 2015/03/21 18:46 저자 kwon37xi