#!/usr/bin/expect -f # set Variables # /home/sven/.docker/machine/machines/sven-test/id_rsa set sshkey [lrange $argv 0 0] # 718feb0e-1517-4f92-a6fa-2ee089cf12e4@sos.ewr1.packet.net set sshurl [lrange $argv 1 1] set username [lrange $argv 2 2] set password [lrange $argv 3 3] set command "" append command [lrange $argv 4 end] set timeout -1 proc runcmd { username password cmd } { send_user "<< username: $username" send_user "<< password: $password" send_user "<< cmd: $cmd" set done 0; while {$done == 0} { expect { "*?login:" { send -- "$username\r" } "*?assword:" { send -- "$password\r" #send -- "\r" } "*?:~#" { send -- "$cmd\r" set done 1 } "*?Reached target Shutdown." { set done 1 } } } } spawn ssh -F /dev/null -o PasswordAuthentication=no -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=quiet -o ConnectionAttempts=3 -o ConnectTimeout=10 -o ControlMaster=no -o ControlPath=none -i $sshkey $sshurl match_max 100000 send -- "\r" set running [ runcmd $username $password $command ] expect { "*? (yes/no)?" { send -- "no\r" expect "# " } "# " { } "*?Restarting system" { } "*?kexec_core: Starting new kernel" { } } send_user "<< DONE expect" send_user "<<"