#!/usr/bin/expect -f set login "root" set password "redhat" set timeout -1 set guest [lindex $argv 0] set prompt "$login@.*\](%|#|\\\$) $" spawn virsh console $guest #login if needed expect "Escape character is" send "\r" expect { {login:} { send "$login\r" expect { {Password:} { send "$password\r" } } } -re $prompt { send "\r"} } expect -re $prompt #run command for {set i 1} {$i < $argc} {incr i 1} { set cmd [lindex $argv $i] send "$cmd\r" expect -re $prompt sleep 1 } #capture return code from last command send "echo RESULT:\$?\r" expect -re "RESULT:(\\d+)" { set result $expect_out(1,string) } #logout send "exit\r" expect "logout" exit $result