期望脚本等待 Heroku ssh 提示
Expect script to wait for Heroku ssh prompt
我想使用 expect
脚本在 Heroku dynos 上 运行 SSH 命令(例如:)
登录dyno时的确切输出是:
▸ heroku-cli: update available from 6.12.9 to 6.14.21-d83c94b
Establishing credentials... done
Connecting to <dyno> on ⬢ <app>...
~ $
我确定更新后第一行会消失。 authentication/login 实际发生需要几秒钟。
一个简单的 expect 脚本可以是这样的:
#!/usr/bin/expect
spawn "./ssh_into_heroku"
expect "xxxx"
send "my_command"
我试过 expect "~ $" { send "my_cmd" }
和 expect "~ $ " { send "my_cmd" }
,但都没有用,我不知道如何调试它。
"expect" 部分要做什么才能使这项工作有效?
您正在等待以 space、一个美元符号和(我猜)另一个 space 结尾的提示。你会用这个:
set prompt_regex { $ $}
expect -re $prompt_regex
我想使用 expect
脚本在 Heroku dynos 上 运行 SSH 命令(例如:
登录dyno时的确切输出是:
▸ heroku-cli: update available from 6.12.9 to 6.14.21-d83c94b
Establishing credentials... done
Connecting to <dyno> on ⬢ <app>...
~ $
我确定更新后第一行会消失。 authentication/login 实际发生需要几秒钟。
一个简单的 expect 脚本可以是这样的:
#!/usr/bin/expect
spawn "./ssh_into_heroku"
expect "xxxx"
send "my_command"
我试过 expect "~ $" { send "my_cmd" }
和 expect "~ $ " { send "my_cmd" }
,但都没有用,我不知道如何调试它。
"expect" 部分要做什么才能使这项工作有效?
您正在等待以 space、一个美元符号和(我猜)另一个 space 结尾的提示。你会用这个:
set prompt_regex { $ $}
expect -re $prompt_regex