You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在脚本中携带密码执行pbrun命令?现有Expect脚本报错

解决pbrun自动输入密码的Expect脚本问题

你的脚本报错核心原因是没有用spawn命令启动pbrun进程——Expect只能捕获通过spawn启动的子进程的输入输出,直接执行命令的话,Expect无法监听对应进程的输出流,才会出现“expect key not found”错误。

下面是修正后的脚本,同时适配你删除文件的需求:

#!/usr/bin/expect -f
# 用spawn启动pbrun进程,这是关键
spawn pbrun ehuid
# 匹配密码输入提示(如果实际提示不是"Password: ",请替换成真实文本)
expect -exact "Password: "
# 发送密码,末尾必须加\r模拟回车,否则密码不会被提交
send -- "你的实际密码\r"
# 等待目标shell的提示符(匹配$符号及后续空格)
expect -re {\$\s*}
# 发送删除文件的命令,替换成你要删除的真实路径和文件
send -- "rm /你要删的文件路径/目标文件*\r"
# 可选:如果需要留在交互shell,用interact;如果执行完退出,用下面两行
expect -re {\$\s*}
send -- "exit\r"
expect eof

额外注意事项:

  • 如果密码里包含特殊字符(比如\、$、!),需要用反斜杠转义,或者把密码放在双引号里处理
  • 更安全的做法是不要明文写密码:可以通过环境变量传递,比如脚本里用set passwd $env(PBRUN_PASS),然后send "$passwd\r",执行脚本前先运行export PBRUN_PASS=你的密码
  • 一定要确认pbrun实际的密码提示文本,比如有些环境会显示"Enter password: ",必须和expect后的字符串完全匹配(包括空格和标点)

内容的提问来源于stack exchange,提问作者rakesh kandukuri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 11:55:03