代码之家  ›  专栏  ›  技术社区  ›  jberthia

bash脚本中的expect语句用于预期输出的错误验证

  •  0
  • jberthia  · 技术社区  · 7 年前

    我的bash脚本中有以下expect语句:

    /usr/bin/expect << EOF
    spawn -noecho lucli users add -username user -role admin -email 
    user@user.com
    expect "password:" { send "password\n" }
    expect "password:" { send "password\n" }
    expect eof
    EOF
    

    我希望expect脚本在传递密码并创建用户后,验证是否从CLI命令返回了正确的输出。

    返回的我要验证的消息是“已成功添加到系统”

    我不知道如何使用expect在bash脚本中实现这一点。

    有人能帮忙吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   glenn jackman    7 年前

    您可以尝试以下方式:

    # note the quoted here-doc word
    status=$(/usr/bin/expect << 'EOF'
        spawn -noecho lucli users add -username user -role admin -email 
        user@user.com
        expect "password:" { send "password\r" }
        expect "password:" { send "password\r" }
        expect eof
        set status [string match "*added to the system successfully*" $expect_out(buffer)]
        # $status will be the C-like boolean 0 or 1
        exit $status
    EOF
    )
    if [[ $status -eq 1 ]]; then
        echo "user added OK"
    else
        echo "user not added"
    fi
    

    裁判: https://tcl.tk/man/tcl8.6/TclCmd/string.htm