EXPECT-Skript mit einem $ im Kennwort verwenden

988
Andy Kendall

Ich versuche, eine Variable in einem Linux-Bash-Skript zu setzen, die ein $Symbol enthält, dh das Kennwort lautet Gl @ d1us $ 123 PASS="Gl@d1us\$123". Ich kann das $mit einem vorgehen \und es funktioniert gut, aber wenn es das EXPECT-Skript aufruft, führt das $Symbol dazu, dass es fehlschlägt. Ich kann das Passwort mit dem \wie zuvor direkt in das EXPECT-Skript eingeben, und es funktioniert einwandfrei. Es ist also nur der Vorgang des Passierens der Passwortvariablen zwischen Skripts, die mir Kummer bereitet.

Hauptskript:

echo  echo  USER=kendalla  PASS="Gl@d1us\$123"  DIR=/home/kendalla/scripts/Audit   ./get_hardware.expect $HOST $USER $PASS > $DIR/$HOST 

get_hardware.expect-Skript:

#!/usr/bin/expect -f log_user 1  log_file /home/kendalla/scripts/Audit/HOST  set HOST [lrange $argv 0 0]  set USER [lrange $argv 1 1]  set PASS [lrange $argv 2 2]  spawn ssh -q -l $USER $HOST  expect "$USER@rebehc01's password:"  send "Gl@d1us\$123\r" ;#(This works)  send $PASS ;#(This doesn't work)  

Alle Hilfe wird geschätzt.

Vielen Dank

Andy.

0
Zeigen Sie einen Code. Es kann leicht gelöst werden. glenn jackman vor 9 Jahren 1
Angehängter Code. Andy Kendall vor 9 Jahren 0

1 Antwort auf die Frage

0
glenn jackman

Das ist das Problem:

./get_hardware.expect $HOST $USER $PASS > $DIR/$HOST . 

Beim Shell-Scripting möchten Sie immer Ihre Variablen zitieren, es sei denn, Sie verstehen genau, wann sie nicht zitiert werden sollen.

./get_hardware.expect "$HOST" "$USER" "$PASS" > "$DIR/$HOST" . 
Es funktioniert immer noch nicht. `./get_hardware.expect" $ HOST "" $ USER "" $ PASS ">" $ DIR / $ HOST "` und erwarten Sie das Kennwort "$ USER @ $ HOST": "send" $ PASS \ r "erwartet"> " Andy Kendall vor 9 Jahren 0
Drucken Sie den Wert von $ PASS im Expect-Skript aus. Was ist es da glenn jackman vor 9 Jahren 0
Ich habe das Expect-Skript lrange in lindex geändert und es funktioniert gut, wie ich es ursprünglich geschrieben habe. danke trotzdem für eure hilfe. Andy Kendall vor 9 Jahren 0