2019년 9월 3일 화요일

bash script + expect script 연결 스크립트

bash 와 expect는 문법도 다르고 방식도 다르다.

bash 는 스크립트 기반으로 명령을 실행한다면 expect의 경우에는 리모트 서버에 접속하여prompt를 통해서 명령을 실행 할 수 있다.
예를 들면 ssh를 통해서 명령어를 실행할 경우 

bash: ssh 계정@서버:명령어
expect: ssh 계정@서버 접속 후 prompt에서 명령어 실행 후 exit

이번에 bash 와 expect를 동시에 사용하기 위해서 스크립트를 만들었다.

#!/bin/bash

DEPLOY_BASE=/home/ansible/expect
DOMAIN="$1"
SERVICE="$2"

LIST="$DOMAIN"_"$SERVICE"_serverlist
USER=root
PASSWD=root

if [ -e "$LIST" ]; then
  for hostip in `cat $DEPLOY_BASE/$LIST`; do
  echo -e "\\n able to connect $hostip \\n"


# 여기서 부터 expect 를 실행한다. EOF는 end of file
expect << EOF
  spawn ssh -o StrictHostKeyChecking=no $USER@$hostip
  expect -re "password:"
  send "$PASSWD\r"

  expect -re "Last login:"
  send "exit \r"


# expect  종료.
EOF

  done
else
  echo -e "\\n # [ERROR] Can not found $LIST file \\n"
fi


단순 ssh 접속 테스트를 하기 위한 스크립트 이고 serverlist 파일에는 접속하려는 ip가 있어야 한다. 

이 스크립트 기반으로 응용하면 다른 명령어들도 실행이 가능하다.








댓글 없음:

댓글 쓰기