Reputation: 1454
I am trying to write one script which climbs up from one system to another through TCL/Expect. It is working for me. I need a regular expression in which expect "$ " and expect "# " is combined , so that any system with any prompt in the path can be included.
#!/usr/bin/expect
# Using ssh from expect
log_user 0
spawn ssh [email protected]
expect "sword: "
send "test\r"
expect "$ "
send "ssh beta\r"
expect "# "
send "uptime\r"
expect "# "
set igot $expect_out(buffer)
puts $igot
Upvotes: 8
Views: 8075
Reputation: 137767
Use this:
expect -re {[$#] }
The keys to this are: add the -re
flag so that we can match an RE, and put the RE in {braces}
so that it doesn't get substituted.
Upvotes: 13
Reputation: 301
A more generic solution:
set prompt "(%|#|\\\$) $"
expect -re $prompt
This one matches %, # and $.
The second dollar sign ensures matching the pattern only at the end of input.
Upvotes: 8