期待spawn id未打开

时间:2017-06-22 15:43:19

标签: linux shell unix redhat expect

简而言之,我开发了一个工具,可以在shell中编写备份脚本,然后使用EXPECT连接到远程服务器并执行shell脚本。

对于长期运行的期望作业或使用不同参数值启动多个作业时,我得到以下错误。

expect: spawn id exp6 not open
    while executing
"expect "*>" { send  "exit\r" }"
    (file "/oraadmin/ettool/upgradescripts/expct_orig_scripts/expdp_expct.sh" line 25)

虽然脚本是从我执行的机器出来的,但它仍然在远程服务器上运行。

以下是代码:

set SoDb [lrange $argv 4 4]
set SoCl [lrange $argv 5 5]
set x  [lrange $argv 6 6]
set THEDATE [lrange $argv 7 7 ]
set timeout -1
#echo $scn_source
spawn ssh -q [lindex $argv 1]@[lindex $argv 0]
log_user 0
expect "yes/no" {
        send "yes\r"
        expect -re "(.*)assword:"  { sleep 5; send "[lindex $argv 2]\r" }
        } -re "(.*)assword:"  { sleep 5; send "[lindex $argv 2]\r" }
expect "*>" { send "sudo su - [lindex $argv 3]\r" }
sleep 5
expect -re "(.*)assword:" {
         sleep 5;send "[lindex $argv 2]\r"
        expect "*]" { send " /orashare/ettool/expdp.sh ${SoDb} ${SoCl} $x $THEDATE\r" }
        } "*]" {  send " /orashare/ettool/expdp.sh ${SoDb} ${SoCl} $x $THEDATE\r" }
log_user 1
expect "*]" { send  "exit\r" }
expect "*>" { send  "exit\r" }
expect eof

我无法在任何堆栈溢出线程中找到确切的情况,请协助。

0 个答案:

没有答案