티스토리 뷰

telnet, ftp, ssh 등을 이용하기 위해서  아이디, 패스워드등 인증을 해야 하기때문에

자동화 처리를 위해 expect라는 script를 이용해 처리를 한다.

아래는 기본적인 ssh의 interactive mode를 구현한 것이다.

custmizing 하여 ftp, telnet등에서도 사용하시길 바란다.

 

vim ssh.exp

#!/usr/bin/expect -f
set timeout 30

#example of getting arguments passed from command line..
#not necessarily the best practice for passwords though...
set server [lindex $argv 0]
set user [lindex $argv 1]
set pass [lindex $argv 2]

# connect to server via ssh, login, and su to root
send_user "connecting to $server\n"
spawn ssh $user@$server

#login handles cases:
#   login with keys (no user/pass)
#   user/pass
#   login with keys (first time verification)
expect {
  "> " { }
  "$ " { }
  "assword: " {
        send "$pass\n"
        expect {
          "> " { }
          "$ " { }
        }
  }
  "(yes/no)? " {
        send "yes\n"
        expect {
          "> " { }
          "$ " { }
        }
  }
  default {
        send_user "Login failed\n"
        exit
  }
}

#example command
send "ls\n"

expect {
    "> " {}
    default {}
}

#login out
send "exit\n"

expect {
    "> " {}
    default {}
}

send_user "finished\n"

실행

$ chmod +x ssh.exp

$ ./ssh '192.168.0.200' 'test' 'test!@#'


 

출처 : http://ubuntuforums.org/showthread.php?t=220139

 

.by rocksea

'Developer' 카테고리의 다른 글

[ Thrift ] thrift installation & example  (0) 2012.10.11
like문 작성법  (0) 2012.10.10
[ console ] commands  (0) 2012.10.08
maven + spring framework 연동하기  (0) 2012.10.04
[ Perl ] FTP Upload  (0) 2012.09.28
댓글