adsense_in_article_test


[bash: expect] ssh 자동 접속 (확장) 리눅스 bash script

[bash: expect] ssh 자동 접속

지난번에 적어 놓은 ssh 자동 접속 방법을 조금 확장시켜 볼 수 있겠다.

expect는 인자(argument)를 사용할 수 있기 때문에, 접속 주소나 암호 등을 script에 넣지 않고 인자로 지정할 수 있다. 실행 명령에 사용된 인자는 argv라는 이름의 변수로 가져온다.

예제 script 이름은 ssl_login2.exp로 하자. 인자 순서는 접속주소, 접속암호, 셸 프롬프트(shell prompt) 문자열 순서로 정하면 실행은 이런 식이 될 것이다.

expect -f ssl_login2.exp john@192.168.0.10 my_password "john>"

ssh서버 192.168.0.10에 john이라는 계정으로 접속하고 암호는 my_password인 경우이다. 로그인했을 경우 셸 프롬프트에 john>이라는 문자열이 들어있다고 가정했다. 셸 프롬프트를 인자로 가져오는 경우 bash에서 사용되는 특수 기호(>, | 등)가 포함되어 있다면 위의 예와 같이 반드시 따옴표 처리를 해 주자.

ssl_login2.exp script는 아래와 같이 만들면 되겠다. 인자로 받은 주소, 접속암호, 셸 프롬프트 문자열 값을 각각 addr, password, prompt 변수에 할당했다. 로그인 후에 하는 작업은 지난번처럼 그냥 커널 버전 확인만 하는 것으로 했다. 

# script file: ssl_login2.exp
# version 2 (with argument support)
# set variables
set addr [lindex $argv 0]
set password [lindex $argv 1]
set prompt [lindex $argv 2]
# spawn ssh session
spawn ssh $addr

expect -nocase "password"
send "$password\r"
expect "$prompt"
# execute commands (in this example, 'uname -r')
send "uname -r\r"
expect "$prompt"
send "exit\r"
exit 0

각기 다른 서버에 들어가 같은 종류의 반복작업을 해야 할 경우 나름 편리하게 사용할 수 있다.
 


핑백

  • 반달가면 : [bash: expect] rsync 자동 원격 백업 2015-12-03 23:53:57 #

    ... expect 스크립트를 이용하면 rsync 원격 백업을 자동화할 수 있다. 이 방법은 예전에 올렸던 ssh 자동 접속 방법과 같은 맥락이다. rsync에 대한 내용은 이전 게시물을 참고하자. 여기로 스크립트 이름은 auto_rsync.exp로 하고, 인자(argument)는 ... more

  • 반달가면 : [bash: expect] 리눅스 다중 사용자(multi-user) 환경에서의 작업 자동화 문제 2015-12-09 20:00:34 #

    ... 작업 자동화를 위해 expect 스크립트를 사용할 경우, 접속암호를 인자(argument)로 사용하면 보안 측면에서 한가지 큰 문제가 있다. 이전에 게시했던 ssh 자동접속이라던가, rsync 자동백업이라던가 이런 종류의 작업이 가지고 있는 약점이다. 나 혼자만 사용하는 리눅스 PC/서버라면 별 문제가 되지 않으나, 여러 사람이 ... more

덧글

댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.



통계 위젯 (화이트)

19207
3300
2298697

2019 대표이글루_IT

B-Side