2016-02-11 72 views
3

我經常在vim中使用:x命令來加密我的計算機上的文件。最近我想用ruby對這些文件進行一些處理。如何用ruby腳本打開用Vim加密的文件(我知道「密碼」)

我有一個應用程序,它具有env vars中的所有「祕密」。我的想法實際上是隻有一個祕密'密碼'env var。我正在考慮爲這個和未來的應用程序提供一種方法,我只需要一個加密文件,我可以使用我所有的敏感數據保持源代碼控制,然後只需維護一個env var。不知道這是多麼可行。

有沒有辦法用ruby閱讀它們,甚至可以保存它們?

我目前的想法是以某種方式直接從ruby調用vi,在命令中傳遞密碼,並以某種方式獲得輸出。我不知道這是否可能,並且我很難發現是否可以。

感謝

+0

你知道哪個加密算法正在使用VIM? (':setlocal cm?')你應該可以用ruby打開文件,並使用適當的加密類型庫對它進行解密。 – Greg

+0

:setlocal cm? => zip – pixelearth

+0

只需在ruby中搜索zip解密程序,zip也稱爲「標準加密」 – sidyll

回答

1

我沒有紅寶石的專業知識,但是,如果你不介意以純文本暴露你的密碼,你可以用Vim寫文件內容到標準輸出:

$ vim -Nesc 'set key=some\ passphrase | e foo.txt | %p | q!' 
foo bar 

如果已設置,Vim將使用key作爲密碼,否則會提示。所以,你可以設置key,然後打開文件,並打印全部(%p),然後退出。我在silent ex-mode (-e -s)中運行它,關閉兼容性(-N)。

您可以使用Getting output of system() calls in RubyRunning a command from Ruby displaying and capturing the output來處理Ruby部分。前者的第二個答案也許可以與存儲在變量中的密碼一起使用。

可以適應這個環境變量:

$ pass='some password' vim -Nesc 'let &key = $pass | e foo.txt | %p | wq!' 
foo bar 
+1

有趣的想法,但由於他使用的是zip加密,如果是用ruby調用外部工具,我認爲只需調用zip實用程序來完成這項工作就更加高效且不言自明。 – sidyll

+0

我在發帖前試過:Archive :: Zip :: UnzipError:無法找到中央目錄結束記錄 – pixelearth