
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: ...