App-FuguVM
view release on metacpan or search on metacpan
share/fuguvm/expect/login.exp view on Meta::CPAN
#!/usr/bin/expect -f
#
# Simple login automation for OpenBSD VM
#
# Usage: login.exp <host> <port> [user] [password]
#
# Use FUGUVM_TIMEOUT from the environment when it exceeds the
# script default. Slow hosts need this, for example under TCG
# emulation in CI.
proc env_timeout {default} {
global env
if {[info exists env(FUGUVM_TIMEOUT)] && $env(FUGUVM_TIMEOUT) > $default} {
return $env(FUGUVM_TIMEOUT)
}
return $default
}
set timeout [env_timeout 30]
if {[llength $argv] < 2} {
puts stderr "Usage: login.exp <host> <port> \[user\] \[password\]"
exit 1
}
set host [lindex $argv 0]
set port [lindex $argv 1]
set user [lindex $argv 2]
set password [lindex $argv 3]
if {$user eq ""} {
set user "root"
}
if {$password eq ""} {
set password "openbsd"
}
# Connect to console
spawn telnet $host $port
# Send a newline to trigger login prompt
send "\r"
# Wait for login prompt
expect {
"login:" {
send "$user\r"
}
"#" {
# Already logged in
puts "Already logged in"
exit 0
}
eof {
puts stderr "telnet could not connect to the VM console"
exit 1
}
timeout {
puts stderr "Timeout waiting for login prompt"
exit 1
}
}
# Enter password
expect "Password:" {
send "$password\r"
}
# Wait for shell prompt
expect {
"#" {
puts "Login successful"
exit 0
}
"$" {
puts "Login successful"
exit 0
}
"Login incorrect" {
puts stderr "Login failed"
exit 1
}
timeout {
puts stderr "Timeout waiting for shell"
exit 1
}
}
( run in 1.920 second using v1.01-cache-2.11-cpan-4ef0a570458 )