2011-11-09 80 views
2

嗨我期待脚本相当新。我正在尝试使用gpg进行密码加密/解密。加密没有问题。对于解密,我试图使用expect脚本来自动化它。 我想使用的基本命令是:GPG -o -d <使用加密密码.gpg文件>使用期望脚本为gpg - 密码解密 - 不起作用

当我运行此命令,独立的,它要求的密码,当我进入它,它创建了输出文件,如预期的那样。输出文件中有密码。

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

任何帮助表示赞赏。它不显示任何错误!输出是:

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

下面是我期待的脚本。

#!/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 
+0

+1:我还没有问题,但这个问题已经很好了,因为它提供了一个快速的方法来做这个令人讨厌的任务!必须指出的是,这是一种不好的安全措施(只要看看'/ proc/$ pid/cmdline'中的密码就清楚了,什么地方会出错?),但是我潜伏着,这是最直接的一点这样做的方式。 – Dacav

回答

2

使用\r,而不是\n在发送命令:\r是模仿用户按Enter回车符。