Expect脚本等待Heroku的SSH提示

Expect脚本等待Heroku的SSH提示

问题描述:

我想使用expect脚本运行在Heroku DYNOS一个SSH命令(例如:Get IP of Heroku dynos)登录到DYNO时Expect脚本等待Heroku的SSH提示

确切输出为:

▸ heroku-cli: update available from 6.12.9 to 6.14.21-d83c94b 
Establishing credentials... done 
Connecting to <dyno> on ⬢ <app>... 
~ $ 

我确定第一行会在更新后消失。实际发生此认证/登录需要几秒钟的时间。

一个简单的期望脚本可能是这样的:

#!/usr/bin/expect 
spawn "./ssh_into_heroku" 
expect "xxxx" 
send "my_command" 

我试过expect "~ $" { send "my_cmd" }expect "~ $ " { send "my_cmd" }但既不是工作,我不知道如何调试这一点。

“预期”部分会做什么?

+0

这是为什么downvoted?它非常明确,它遵循以下所有内容:https://stackoverflow.com/help/on-topic –

您正在等待以空格,美元符号和(我猜)另一个空格结束的提示。你会用这个:

set prompt_regex { \$ $} 
expect -re $prompt_regex