Ich habe eine .sh-Datei und eine .exp-Datei und beide haben Quelle aus anderen Textdatei, die ihre Variablenwerte enthält. Wenn ich die .sh-Datei ausführe, wird die .exp-Datei ausgeführt, aber es sieht so aus, als könnte sie den Wert aus der Quelldatei nicht richtig lesen, wenn sie in diese Zeile gelangt. Ich habe mich gefragt, ob ich es richtig gemacht habe.Quelle aus einer Textdatei in einer Expect-Datei funktioniert nicht
Die .sh Datei
#!/bin/bash
source ../common/labinfo/qcow_var.txt
cd $WORKSPACE/qcow_vnf
echo -e "** Starting qcow_vnf Installation **\n** Checking the connectivity to Host-1...**\n"
../common/isup_addr.sh "$HOSTIP_1" 1
if [ $? -ne 0 ]
then
exit 1
fi
echo -e "** Checking the connectivity to Host-2...**\n"
../common/isup_addr.sh "$HOSTIP_2" 1
if [ $? -ne 0 ]
then
exit 1
fi
create_vm.exp "$HOSTIP_1" "$HOSTUSER" "$HOSTPASS" "$VMNAME_1"
Die .exp-Datei
#!/opt/tools/unsupported/expect-5.39/bin/expect
source ../common/labinfo/qcow_var.txt
set HOST [ lindex $argv 0 ]
set USER [ lindex $argv 1 ]
set PASSWORD [ lindex $argv 2 ]
set VMNAME [ lindex $argv 3 ]
echo -e "** Creation of $VMNAME on $HOST begins... **\n"
spawn ssh -l $USER $HOST
expect_after eof {exit 0}
set timeout 10
expect "(yes/no)?" { send "yes\r" }
expect "password:" { send "$PASSWORD\r" }
expect "~]#" { send "date\r" }
set timeout 1200
......(etc)
Und die .txt-Datei
HOSTIP_1=172.28.152.240
HOSTIP_2=172.28.152.241
HOSTUSER="root"
....(and the rest of the variables)
expect ist eine Erweiterung von Tcl, und Tcl verwendet nicht die 'variable = Wert'-Syntax. Sie können nicht dieselbe Konfigurationsdatei für beide Sprachen (Shell und Expect) verwenden, ohne mehr Code zu analysieren, um die Shell-Syntax in Tcl zu übersetzen. –