#!/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