2011-11-09 136 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回車符。