OS/Server > Unix/Linux공통

expect 로그인자동화 spawn

#root#cmd#자동로그인

기본적인 사용법
타입 설명
set 변수설정 형식 : set key value 와 같이 공백으로 구분
입력파라메터는 [lindex $argv 0],  [lindex $argv 1]와 같이 0,1,2,... 로 지정한다.
spawn 최초 명령어를 나열/실행한다.
expect 명령어 실행 후 리턴되는 문자열 (기대되는 문자열이 나올때까지 기다린다.)
send 문자열 또는 명령어를 보낸다. ("문자열\r") \r은  리턴을 의미한다.
interact expect를 종료하고 제어권을 셸로 리턴한다.
expect eof expect 종료
커멘드(Command line)라인의 명령어 입력으로 로그인 (root)

$ expect -c 'spawn su -;expect "암호:";send "{password}\r";interact;';

※ root로 로그인 후 ls -alt 명령어를 보넨다.
$ expect -c 'spawn su -;expect "암호:";send "{password}\r";send "ls -alt\r";interact;';

root로 로그인해 명령어를 실행 후 빠져나오기

$ expect -c 'spawn su -;expect "암호:";send "{password}\r";send "{명령어};\r";send "exit;\r";interact;'

JAVA Application (JSch 사용을 통한 command 실행 예제)- 상동
$ expect -c 'spawn su -;expect "암호:";send "{password}\r";send "{명령어};\r";send "exit;\r";interact;'

 

Shell Script 셸스크립트를 사용한 root 로그인 작업

#!/usr/bin/expect

set timeout 30

## 매개변수로 외부에서 1,2번을 취득한다.
set PWD [lindex $argv 0];
set CMD [lindex $argv 1];

## root change 명령어
spawn su -;

## 기대되는 문구 영어인경우 password:  등으로 표시될 것이다.
expect "암호:"

send "$PWD\r"

send "$CMD;\r"

interact