automatisiertes ssh-Login und Aktion mit expect

Ein ssh-Login zu automatisieren, ist stabil nur durch expect, via Skript, zu realisieren.
Expect ist ein spezialisiertes Tool zur Automatisierung interaktiver Anwendungen auf Unix.
Unter Windows soll es auch einen Clone geben (sourceforge.net ).

Das ssh-Login interaktiv aufgerufen ssh sshusr@server03 fordert zur Eingabe des Passwortes auf.
Mit Hilfe von expect wird nach Absenden (spawn) des Befehls auf den String „password“ gewartet.
Dazu das Skript ssh_loginaction mit folgendem Aufruf und Parametern:

./ssh_loginaction user password server03

#!/usr/local/bin/expect
set timeout 30
set user [lindex $argv 0]
set pass [lindex $argv 1]
set host [lindex $argv 2]
spawn ssh $user@$host
expect {
    "password:" {send "$pass\r"}
  default {puts stdout "\nHat nicht funktioniert!" exit}
}

expect "prompt>" {send "action_command\r"}
expect "prompt>" {send "exit\r"}
puts stdout "\nEND\n"

set timeout 30 – Standard sind 10 Sekunden Timeout. Dann beendet sich expect ohne weitere Warnung. Es soll ja Server geben, die unter Last und nur über ausgiebiges Routing zu erreichen, etwas länger für das Login brauchen. Ich hatte mich gewundert, als ein expect die Aktion meist ausführte, manchmal aber eben nicht. Grund war ein nicht definierter Timeout und dann ist nach 10 Sekunden Schluss.


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert