使用expect脚本进行gpg密码解密不起作用

4

你好,我对 expect 脚本比较新手。我正在尝试使用 gpg 进行密码加密/解密。加密没有问题。对于解密,我正在尝试使用 expect 脚本进行自动化。

我尝试使用的基本命令是:gpg -o -d <已加密密码的 .gpg 文件>

当我单独运行这个命令时,它会要求输入密码短语,当我输入后,它会创建输出文件,就像预期的那样。输出文件中包含了密码。

但是当我使用 expect 脚本运行此命令以便在运行时自动提供密码短语时,expect 不会创建输出文件。

任何帮助都将不胜感激。它没有显示任何错误! 输出为:

spawn gpg -o /home/gandhipr/passwdfile -d /home/gandhipr/passfile.gpg
gpg: CAST5 encrypted data
Enter passphrase: 

以下是我的expect脚本。
#!/usr/bin/expect
set timeout 1
set passdir [lindex $argv 0]
set passfile [lindex $argv 1]
set passfilegpg [lindex $argv 2]
set passphrase [lindex $argv 3]
spawn gpg -o $passdir$passfile -d $passdir$passfilegpg
expect "Enter passphrase:"
send "$passphrase\n"
exp_internal 1
exit 0;
interact

+1:我还没有遇到这个问题,但这个问题已经很好了,因为它提供了一个快速的方法来完成这个烦人的任务!必须提到的是,这是一种不好的安全实践(通过查看/proc/$pid/cmdline就可以清楚地看到口令,会有什么问题?),但我四处潜伏,这是最直接的做法。 - Dacav
1个回答

3
使用\r代替\n在发送命令中: \r是回车字符,模拟用户按下Enter键。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接