1 Pluspunkt 0 Minuspunkte

Ich habe ein expect Script das mich automatisch auf einem Linux Server einloggt.

#!/usr/bin/expect

set command [lindex $argv 0]
set timeout 20

spawn ssh manuel@172.21.0.143
expect "password:"
send "xxxxx\r"
expect "$ "

expect eof

Das Problem ist sobald ich verbunden bin kann ich zwar Text eingeben aber der wird nicht als Befehl erkannt und man tippt einfach ins leere.

manuel@vie-nb-gbi016:~$ expect test.expect
spawn ssh manuel@172.21.0.143
manuel@172.21.0.143's password:
Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-52-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

Erweiterte Sicherheitswartung (ESM) für Applications ist  nicht aktiviert.

7 Aktualisierungen können sofort angewendet werden.
Zum Anzeigen dieser zusätzlichen Aktualisierungen bitte »apt list --upgradable« ausführen

Aktivieren Sie ESM Apps, um zusätzliche zukünftige Sicherheitsupdates zu erhalten.
Siehe https://ubuntu.com/esm oder führen Sie aus: sudo pro status

New release '24.04.2 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

Last login: Fri Mar 21 01:14:54 2025 from 10.242.2.4
manuel@vie-t-srv-wazuh:~$



ddd
fds
g
fd
hsd
hfg
hfg
d^Cmanuel@vie-nb-gbi016:~$

DWie kann ich mich automatisch auf dem Server einloggen und dann in der Shell am Server ganz normal weiterarbeiten?

von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Die Direktive expect eof bedeutet, dass das Script bis zum Ende des Prozess wartet. Wenn du in der interaktiven Shell auf dem Server arbeiten möchtest kannst du stattdessen interact verwenden.

#!/usr/bin/expect

set command [lindex $argv 0]
set timeout 20

spawn ssh manuel@172.21.0.143
expect "password:"
send "xxxxxxx\r"
expect "$ "

interact
von (1.3k Punkte)