Groovyでzipファイルを暗号化してみる
はじめに
社内で外部に資料をメール送信する際には、 必ず以下のようなルールがあります。
( ここではこのルール自体の是非については触れません!! )
- ファイルをzip圧縮する
- zipファイルを暗号化する
- zipファイルはお客様が Windows PCを利用しているため、 Windows 上の一般的なツールで展開できるようにする
毎回手作業でやっていたので、 Groovyスクリプト化してみました。
以下がスクリプトの一部。
ここでは、 Zipユーティリティークラス というライブラリを利用させていただきました。 これは便利!ありがとう!
機能
- 利用環境 は Windows を想定しています。
- 少し変更すればLinuxやmacOS上でももちろん動作します。
- 圧縮対象となるディレクトリ は "デスクトップ" 上の "src/" ディレクトリに配置します。
- 圧縮済みファイル は "デスクトップ" 上に "encrypt-xxxx.zip" というファイル名で作成されます。
- パスワード は 実行日時(YYYYMMDD) となります。
- こちらも少し変更すれば別のルールに変更可能です。
zipTheAttachedFiles.groovy
- Grab 機能を使って、実行時にZipユーティリティライブラリを自動的にダウンロードしてきます。
@Grapes(
@Grab(group='com.astamuse', module='hishidama-hmzip', version='1.6')
)
import jp.hishidama.zip.ZipCloak
import java.io.File
import java.util.*
import java.text.*
// LinuxやmacOSでは、こちらのデスクトップ該当パスを適切に変更すれば動作します
def desktop = System.getProperty("user.home") + "/デスクトップ"
def srcdir = new File("${desktop}/src")
def distdir = desktop
if (!srcdir.exists()) {
srcdir.mkdir()
}
print "${srcdir.name}フォルダにファイルを入れてください。(準備ができたらEnterを押してください)"
System.in.read()
def dateStr = new SimpleDateFormat("yyyyMMdd").format(new GregorianCalendar().time)
def password = "${dateStr}"
def zipfile = new File("${distdir}/${srcdir.name}.zip")
ant = new AntBuilder()
ant.delete(
file:"${distdir}/${srcdir.name}.zip"
)
ant.zip(
destfile:"${zipfile.path}"
,basedir:"${srcdir}"
,update:"true"
){
}
def encZipfile = new File("""${desktop}/encrypt-${zipfile.name}""")
ant.delete(
file:"${encZipfile.path}"
)
ZipCloak zip = new ZipCloak(zipfile)
zip.encrypt(encZipfile, password.getBytes("MS932"))
ant.delete(
file:"${distdir}/${srcdir.name}.zip"
)
println "※※処理完了!※※"
実行例
groovy zipTheAttachedFiles.groovy
ディスカッション
コメント一覧
まだ、コメントがありません