How To Automate SSH With Expect

2010/11/17

Another useful snippet of code to automate SSH with expect:

#!/usr/bin/expect
spawn ssh user@host whatever
expect "*?assword:*"
send -- "password\r"
send -- "\r"

I used it with dynamic SSH connection detection in .profile.

In a lab I am using every machine has the same unprivileged user authenticated with the same password. And SSH is open.

You can guess the popular game: connect to random machines and mess things up while someone is working on them.

In .profile I've added a simple check and a call to the expect script to automatically connect to whoever ssh to my machine (and shutdown their computer, or open random porn, you decide):

if [ "$SSH_CONNECTION" ] ; then
    ./release_the_dogs.exp
fi

The victim ip is easily obtained by ${SSH_CONNECTION%* * * *}.

Follow me: @gbrindisi