Uma simplificação seria eliminar o loop de while com bugs e lento, o que também liberaria stdin a ser usado para interact . Ou seja, o arquivo de entrada seria transmitido e lido pelo código TCL no script expect .
#!/usr/bin/expect
if {[llength $argv] != 1} {
puts stderr "Usage: $0 iplist-file"
exit 1
}
set ipfh [open [lindex $argv 0]]
while {[gets $ipfh ip] >= 0} {
spawn ssh root@$ip dmidecode
expect "Password:"
send "Hunter2\r";
interact
}