[expect] sudo passwd 커맨드 체크

#!/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
위로 스크롤