#!/usr/bin/expect
set serverIP [lindex $argv 0]
set loginUser "user0"
set loginPassword "<password>"
set log_file "test.log"
set timeout 5
set fileid [open $log_file "a+"]
## ssh 로그인
spawn ssh $loginUser@$serverIP
## SSH 포트 연결이 불가할 경우 접속 즉시 오류 처리
expect_after eof { puts $fileid "FAILED-no_route $serverIP"; close $fileid; puts "\n"; exit 1 }
## interact with SSH
expect "yes/no" { send "yes\r" }
## 오랜 시간 접속이 안될 경우 접속 불가 처리
expect "assword:" { send "$loginPassword\r" } \
timeout { puts $fileid "FAILED-connect $serverIP"; close $fileid; puts "\n"; exit 2 }
## Password 프롬프트가 또 나오면 패스워드 불일치 처리
expect "assword:" { puts $fileid "FAILED-login $serverIP"; close $fileid; puts "\n"; exit 3 }
## $ 프롬프트를 기다리고 LANG 변수 셋팅
expect "$"
send "export LANG=C\r"
## $ 프롬프트를 기다리고 sudo 커맨드 실행
expect "$"
send "sudo passwd user1\r"
expect "assword:" { puts $fileid "SUCCESS $serverIP"; } \
timeout { puts $fileid "FAILED-sudo $serverIP"; close $fileid; puts "\n"; exit 4 }
puts "\n"
close $fileid
close $spawn_id
exit 0