Automatisierter SSH-Login mit expect
Script um unter Linux eine SSH-Verbindung automatisiert aufbauen zu können ohne seinen SSH-Key auf dem SSH-Server zu hinterlegen.
Voraussetzung ist das “expect” installiert ist.
#!/usr/bin/expect -f
# ./DATEINAME host user pass rootpw port
set host [lindex $argv 0]
set user [lindex $argv 1]
set pass [lindex $argv 2]
set rpass [lindex $argv 3]
set port [lindex $argv 4]
# Starte SSH
spawn ssh $user@$host -p$port
# wenn Authkey noch nicht bekannt, mit ja bestätigen
expect_background "authent" {
send "yes\r"
}
# wenn Terminal unbekannt, setzte auf vt100
expect "unknown" {
send "vt100\r"
}
# wenn Passwort verlangt wird, übergebe es
expect "asswor" {
send_user -- "$pass"
send -- "$pass\r"
send "\r"
}
sleep 2;
# werde SuperUser (root)
send "su\r"
sleep 1;
# wenn Passwort verlangt wird, übergebe es
expect "asswor" {
send_user -- "$rpass\r"
send -- "$rpass\r"
}
# Übergebe an Benutzer
interact
Script in einer Datei speichern, diese ausführbar machen “chmod +x DATEINAME”.
Aufruf dann wie folgt:
./DATEINAME