#!/usr/bin/expect funktioniert nicht

#!/usr/bin/expect funktioniert nicht

Dies ist wahrscheinlich eine einfache Frage, aber ich habe ein einfaches Expect-Skript, dem ich den ausführbaren Teil hinzugefügt habe, der die Interpreterzeile #!/usr/bin/expect zu ignorieren scheint. Außerdem scheint es, als würden Variablen nicht gesetzt, da sie leer sind, wenn ich sie echoe ...

#!/usr/bin/expect -f
set device "1.1.1.1"
set user   "testuser"

spawn ssh $user@$device
echo $device
echo $user

ls -lh
-rwxr-xr-x  root  root    testexpect.exp

Danke für eure Hilfe, Community!!

PS: Ich verwende Debian Wheezy, installiert über apt-get install expect...danke

Antwort1

Expect basiert auf der Tcl-Sprache. Sie sollten daher nicht „echo“ aus Bash verwenden, sondern „puts“, um etwas auf dem Bildschirm auszugeben:

#!/usr/bin/expect -f
set device "1.1.1.1"
set user   "testuser"
spawn ssh $user@$device
puts $device
puts $user

Und Sie erhalten das folgende Ergebnis:

$ ./test.exp
spawn ssh [email protected]
1.1.1.1
testuser

Antwort2

Die Fehlermeldungen lassen darauf schließen, dass Sie den Befehl mit einem expliziten Interpreter ausführen, zB:

bash ./testexpect.exp

Dadurch wird die Zeile "#!" ignoriert. Was auch immer das Skript startet, muss nur die Datei benennen (oder explizit angeben expect ./testexpect.exp). Wenn Ihre Zeile #! falsch wäre, hätten Sie/usr/bin/expect: bad interpreter: ...

verwandte Informationen