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

如何在Linux Expect中使用正则表达式?解决Duplicity备份密码交互问题

解决Alpine系统中Expect处理Duplicity密码交互的问题

问题原因

  1. 你的Expect脚本试图一次性匹配Duplicity输出的整段前置信息+密码提示,但Duplicity是分多行逐步输出这些内容的,Expect会因等待完整匹配内容超时,无法触发密码发送。
  2. Alpine系统默认使用busybox-expect(简化版Expect工具),不支持-re正则选项,只能使用glob模式的通配符匹配。

修正后的Expect脚本

完整可运行脚本如下,核心是通过通配符*忽略前置输出,只匹配关键的密码提示:

#!/usr/bin/env expect

# 替换为你的实际GnuPG密码
set pass "your_gnupg_passphrase"

# 启动Duplicity备份命令,替换为你的备份源和目标参数
spawn duplicity /path/to/source backup://target/location

# 等待第一个密码提示,*匹配所有前置输出内容
expect "*GnuPG passphrase for decryption: "
send "$pass\r"

# 等待第二个密码确认提示
expect "*Retype passphrase for decryption to confirm: "
send "$pass\r"

# 等待备份命令执行完成
expect eof

使用说明

  1. 确保Alpine容器中已安装Expect:apk add busybox-expect
  2. 将脚本保存为duplicity_backup.exp,赋予执行权限:chmod +x duplicity_backup.exp
  3. 运行脚本:./duplicity_backup.exp

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 18:35:41