用脚本驱动交互式程序,自动处理提示和输入
expect 基于 Tcl,用 spawn 启动程序、expect 等待输出、send 发送输入,适合自动化 ssh、passwd、telnet 等交互流程。优先用密钥/API 替代明文密码自动化。
expect -c '
spawn ssh user@host
expect "password:"
send "secret\r"
interact
'
expect <<'EOF'
spawn ssh user@host
expect "yes/no" { send "yes\r"; exp_continue }
expect "password:" { send "$env(PASS)\r" }
interact
EOF
send 默认不加换行;交互式提示通常需要 \r。timeout/set timeout 调整,避免脚本卡死。interact 把控制权交回用户;纯自动化时不要加。exp_continue 用于多次匹配;漏掉会提前退出。