ansible을 사용하고 Expect 도구를 사용하여 스크립트 실행을 계속하세요.

ansible을 사용하고 Expect 도구를 사용하여 스크립트 실행을 계속하세요.

내 예상 스크립트:

#!/usr/bin/expect -f

set timeout 1    
spawn /opt/install.sh

expect  "\[input\] Are you installing the application at the central data center? \[yes/no default: yes\]? \[yes\]\r"
send    "yes\r"

expect  "\[input\] What is the code of central data center \[default: 01\]? \[01\]\r"
send    "01\r"

expect  "What is ip or hostname of your server \[default: localhost\]? \[localhost\]\r"
send     "portal\r"

interact

mkdir /opt/dir1
mkdir /opt/dir2
cp /root/file1 /opt/dir1

Ansible을 통해 이 스크립트를 실행하면 문제가 끝난 후 스크립트가 중지되고 다른 명령 mkdir /opt/dir1등을 실행하지 않습니다.

답변1

interact이스케이프 조건이 작성되지 않으면 종료되지 않는 대화형 루프입니다. ssh -e escape_char이를 지원하기 위해 적절한 코드를 작성해야 한다는 점을 제외하면 이 함수와 유사합니다.

#!/usr/bin/env expect
spawn expect
expect "> "
interact {
  "~" { return }
}
send "exit\r"
expect eof

실행 시간:

% ./interact
spawn expect
expect1.1> puts hi         # this was typed under interact
hi
expect1.2> exit            # this is where ~ was pressed
% 

관련 정보