PPAP用のファイルzip圧縮シェルスクリプト

いまだにPPAPでファイル送信いけないことがありますわな。

PPAP・・・

PPAPとは、「Password付きZIPファイルを送ります」「Passwordを送ります」「Aん号化(暗号化)」「Protocol」の頭文字をとった、日本の企業で広く使われていたファイル共有手法です。メールにパスワード付きのZIPファイルを添付して送り、後から別のメールでパスワードを送信する、という手順のことです。

ちょっとでも手間を減らすために、シェルスクリプト作る。

Windows > WSL で実行する想定。

要件

  • 第1引数のファイルを、圧縮する
  • 圧縮する際はパスワードを付与する
  • パスワードは第2引数のモノを使用するが、指定がない場合は、ランダムなパスワードを付与する
  • ランダムなパスワードを付与した場合は、そのパスワードがファイル名のファイルを作成する(ファイル拡張子は無し)
  • パスワードがファイル名のファイルを生成する場所は、第1引数に指定したファイルと同じフォルダ内。

シェルスクリプト

#!/usr/bin/env bash

set -eu

# 引数チェック
if [ $# -lt 1 ]; then
  echo "Usage: $0 <file> [password]"
  exit 1
fi

TARGET="$1"
DIR="$(dirname "$TARGET")"
BASENAME="$(basename "$TARGET")"

# パスワード生成 or 使用
if [ $# -ge 2 ] && [ -n "$2" ]; then
  PASSWORD="$2"
else
  # ランダムパスワード生成(32文字)
  PASSWORD="$(tr -dc 'A-Za-z0-9' </dev/urandom | head -c 32)"
  # パスワードを書き出すファイル
  #PASSFILE="${DIR}/${BASENAME}.password"
  #echo "圧縮ファイルの展開パスワードは以下の通りです:" > "$PASSFILE"
  #echo -n "$PASSWORD" > "$PASSFILE"
  touch "$PASSWORD"
fi

# zipでパスワード付き圧縮
zip -P "$PASSWORD" "${TARGET}.zip" "$TARGET"


上記のシェルスクリプトを、PATHが通ってるところに作成する。
zp.shとかの名前で。

実行権も付与。

chmod +x zp.sh    # ファイル名は例

コメント