期望脚本在bash中不匹配

时间:2016-05-26 07:52:13

标签: expect

我有调用期望的功能,但期望不匹配第二行,它匹配第一场比赛,我试过各种想法,请帮忙

{{1}}

1 个答案:

答案 0 :(得分:0)

您的代码表明您希望看到密码提示,然后您希望看到shell提示符,然后您希望看到拒绝。显然,你要么看到提示被拒绝的消息:

function login_ssh_user {
    #...
    export U1="${LDAPUSR}"
    export S1="${SOESYS}"
    export P1="${LDAPPWD}"
    expect << 'EOF'
            spawn ssh $env(U1)@$env(S1)
            expect "password:" { send $env(P1)\r }
            expect  {
                "$ "    { send_user "Login Success ... PASS\n"; send exit\r }
                denied" { send_user "Login Failure ... Fail\n"; send \x03 }
            }
EOF
    logger $FUNCNAME "end"
}

注意:

  • 我在重定向中引用了EOF。这有效地引用了整个期望的脚本主体
  • 您导出变量,因此期望可以从env数组
  • 中获取它们
  • shell提示符和“denied”都是单个expect命令中的分支。无论哪个人预期首先会“赢”。
  • Ctrl + C是\ x03