hi,

i have many Proxmox servers with a lot of VMs. I want to use expect to connect 
to the VMs via serial console (qm terminal <vm_id>), and check if I need to 
login (expect "login: "), or if someone forgotten to logout and I have already 
a  prompt and I need to send an exit before and than try to login again.

My very first expect script looks like:

==============
#!/usr/bin/expect -f
### Setting basics

# Show commands and output
log_user 1

# Set variable
set user root
set password testpass
set name [ exec hostname -f]
set prompt ": "

spawn qm terminal 101

#expect_before ": " {
#   send "exit\r"
#}
   expect "login: "
   send "$user\r"
   expect "password:"
   send "$password\r"
   expect $prompt
   puts "---------- $name START ---------"
   expect $prompt
   send "hostname -f\r"
      expect eof
   puts $expect_out(buffer)
      expect $prompt
      send "cat /etc/debian_version\r"
      expect eof
   puts $expect_out(buffer)
      expect $prompt
      expect eof
      send "sed -i 's/root:\ nobody/root:\ sys...@example.com/g' 
/etc/aliases;newaliases\r"
      expect $prompt
      puts "--------- END -------"
      expect $prompt
      send "exit\r"
      expect "login:"
      send "\x1o\r"
================

it works, if I need to login first, but if I have a shell, I want to send an 
"exit" before and (re)login again.

The next point is: expect is very slow ... it seems, that there is a default 
delay .... every command needs 10 seconds :-) Can I remove the delay or make it 
shorter ?

cu denny

Reply via email to