Also ich habe mir expect auch schon eine ssh Verbindung automatisiert. Man muss halt auch die Abfragen, ob das Zielsystem zu den knwon_hosts hinzugefügt werden soll und wie der entsprechende Fingerprint ist beachten. Das Skript (genannt remoteCommand) sieht wie folgt aus: #!/usr/bin/expect -f set ip [lindex $argv 0] set user [lindex $argv 1] set password [lindex $argv 2] set command [lindex $argv 3] set timeout 10 spawn ssh -l $user $ip $command expect "(yes/no)?" {send "yes\r" expect "password: $" send "$password\r"} "password: $" {send "$password\r"} expect "$ $"
Aufrufen tut man das ganze dann mit ./remoteCommand $ip $user $password $command SICHER IST DAS ABER NICHT!!! DAS PASSWORT STEHT DANACH IN DER HISTORY Wenn man sich bei SSH die Passwortabfragen sparen will, sollte man mit private / public Keys arbeiten und nirgendwo ein Passwort speichern.
Es gäbe sonst auch die Möglichkeit, in der bashrc zu definieren, dass Kommandozeilen, die mit einem Leerschlag beginnen, nicht in die History mit aufgenommen werden. HISTCONTROL="ignorespace" (oder "ignoreboth", das zusätzlich noch doppelte Eingaben ignoriert)
Dann aber einfach nicht vergessen, jedes mal den Leerschlag vorne hinzuschreiben bevor man die Entertaste drückt.
Das Skript (genannt remoteCommand) sieht wie folgt aus:
#!/usr/bin/expect -f
set ip [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]
set command [lindex $argv 3]
set timeout 10
spawn ssh -l $user $ip $command
expect "(yes/no)?" {send "yes\r" expect "password: $" send "$password\r"} "password: $" {send "$password\r"}
expect "$ $"
Aufrufen tut man das ganze dann mit
./remoteCommand $ip $user $password $command
SICHER IST DAS ABER NICHT!!! DAS PASSWORT STEHT DANACH IN DER HISTORY
Wenn man sich bei SSH die Passwortabfragen sparen will, sollte man mit private / public Keys arbeiten und nirgendwo ein Passwort speichern.
Es gäbe sonst auch die Möglichkeit, in der bashrc zu definieren, dass Kommandozeilen, die mit einem Leerschlag beginnen, nicht in die History mit aufgenommen werden.
HISTCONTROL="ignorespace" (oder "ignoreboth", das zusätzlich noch doppelte Eingaben ignoriert)
Dann aber einfach nicht vergessen, jedes mal den Leerschlag vorne hinzuschreiben bevor man die Entertaste drückt.