[
é especial para o TCL, portanto, será necessário um tratamento adequado, seja por "\[quotes]"
ou substituindo as aspas por chaves {[quotes]}
. Um exemplo mais completo seria parecido com
#!/usr/bin/env expect
set prompt {\[USER@HOST[[:blank:]]+[^\]]+\]\$ }
spawn ssh USER@HOST
expect_before {
# TODO possibly with logging, or via 'log_file' (see expect(1))
timeout { exit 1 }
eof { exit 1 }
}
# connect
expect {
# if get a prompt then public key auth probably logged us in
# so drop out of this block
-re $prompt {}
-ex "password:" {
send -- "Hunter2\r"
expect -re $prompt
}
# TODO handle other cases like fingerprint mismatch here...
}
# assuming the above got us to a prompt...
send -- "cd FIXMESOMEDIR\r"
expect {
# TWEAK error message may vary depending on shell (try
# both a not-exist dir and a chmod 000 dir)
-ex " cd: " { exit 1 }
-re $prompt {}
}
# assuming the above got us to a prompt and that the cd was
# properly checked for errors...
send -- "echo git pull FIXMEREMOVEDEBUGECHO\r"
expect -re $prompt
interact