반응형

expect

Expect는 스크립트에 따라서 다른 상호작용하는 프로그램과 대화하는 프로그램입니다. 번역된 언어는 대화를 하는 데 있어서 분기와 높은 수준의 제어 구조를 제공합니다. 게다가, 사용자는 스크립트로 원할 때 직접 상호작용하면서 제어를 할 수 있습니다.

Expect는 사용자 수준의 어떤 프로그램이나 작업에 대한 명령어로서 실행될 수 있습니다. Expect는 실제로 동시에 여러 프로그램과 대화할 수 있습니다.

사용예시

https://github.com/SDRLurker/shell

mssh.sh

mssh.sh 실행할서버 SSH포트 "명령"

shell 내의 sexecute() 함수가 있습니다. 

ssh로 서버에 접속하여 $PW를 보내 비밀번호를 자동으로 입력하는 기능을 합니다.

# 원격 서버에 접속하여 shell 명령을 수행합니다.
sexecute()
{

local IP=$1
local PORT=$2
local PW=$3
local MSG=$4 

if [ -z $PORT ]; then
    PORT=22
fi

echo "ssh -p$PORT $IP $MSG"
expect <<EOF
set timeout -1
spawn ssh -p$PORT $IP $MSG # SSH로 $IP와 $PORT로 접속해 $MSG명령을 실행하기 위해 접속
expect "password:"                    # SSH에서 password라는 글자를 받으면 다음 줄로 넘어간다.
send "$PW\r"                              # 비밀번호 $PW 문자열을 입력한다.
expect eof
EOF

}

 


출처

http://linux.die.net/man/1/expect

반응형

+ Recent posts