如何使用预期脚本做更多事情,而不仅仅是登录

Pau*_*ner 0 bash scripts beagleboard expect

我有一个登录到我的 Beaglebone 的期望脚本:

    #!/usr/bin/expect -f
    spawn ssh debian@192.168.7.2
    expect "debian@192.168.7.2's password:"
    send "temppwd\r"
    interact &&
    mkdir emma &&
    cd emma
Run Code Online (Sandbox Code Playgroud)

这有效并且它登录到 debian 帐户。但是,它会在interact其他两个命令未执行后停止。我该怎么做才能做到这一点?

编辑

好的,谢谢 andy256 我想这interact是错误的,但是,我明白了

执行时无效的命令名称“mkdir”

如何将期望脚本与普通 shell 脚本结合起来?

提前致谢 !

gle*_*man 5

期待的是节目的主旨sendexpect对:你发送一些文字产生的进程,并期望响应。在这种情况下,您发送 mkdir 命令,并希望看到您的提示以了解该命令已完成。提示最好作为正则表达式匹配以匹配它的结尾。由于提示是如此可配置,您可能需要编辑提示表达式:该表达式匹配文字美元符号和字符串末尾的空格。

#!/usr/bin/expect -f
spawn ssh debian@192.168.7.2
expect "debian@192.168.7.2's password:"
send "temppwd\r"
set prompt_re {\$ $}
expect -re $prompt_re
send "mkdir -p emma && cd emma\r"
expect -re $prompt_re
interact
Run Code Online (Sandbox Code Playgroud)