1. 程式人生 > >對文件的GPG2的處理

對文件的GPG2的處理

shell腳本

背景是 A和B公司之間通過gpg2加密文件並交互

A公司能訪問UPDIR、DOWNDIR目錄下的文件、A公司使用B公司的gpg2公鑰加密之後的文件放到UPDIR目錄下,通過以下腳本處理之後文件放到OUTDIR目錄之下供B公司拿到解密文件

B公司能訪問OUTDIR、RETURNDIR目錄下的文件,反之亦然。


#!/bin/bash
Company=sftp-test
Program=test-sftp
dateymd=$(date  +%Y%m%d)
#A服務器的公鑰
GPGUSERID=
#B服務器的私鑰
GPGPASSPHRASE=
#
UPDIR=/sftp/$Company/$Program/upfile/$dateymd
OUTDIR=/sftp/$Company/$Program/outfile/$dateymd
RETURNDIR=/sftp/$Company/$Program/returnfile/$dateymd
DOWNDIR=/sftp/$Company/$Program/downfile/$dateymd
#創建目錄
for i in {upfile,outfile,returnfile,downfile};do
    if [ -d /sftp/$Company/$Program/$i/$dateymd ];then
        continue
    else
        mkdir -p /sftp/$Company/$Program/$i/$dateymd
        directory=/sftp/$Company/$Program/$i
        if [ $i == "upfile" -o $i == "downfile" ];then
            chown -R $Company\_$Program:sftpusers $directory
        else
      chown -R wps_$Company\_$Program:sftpusers $directory
    fi
  fi
done
#對文件加解密處理函數
#settle函數參數 $1-表示對文件加解密以及復制  $2-被處理的文件 $3-處理之後的文件
settle(){
    case $1 in
	decode)
	    gpg2 -d --batch --passphrase $GPGPASSPHRASE -o $3  $2 && mv $2 ${2}.bak;;
	encryption)
	    gpg2 -e -r $GPGUSERID -o $3  $2 && mv $2 ${2}.bak;;
	copy)
	    cp -r $2  $3 && mv $2 ${2}.bak;;
	*)
	    echo -e "\033[5m\033[31mFiles are encrypted, decrypted, or just copie! \033[0m";;
	esac
}
#判斷文件的完整並處理
#dispose函數參數 $1-表示對文件做什麽處理  $2-被處理文件目錄 $3-處理之後所放文件目錄
dispose(){
    FileName=`find $2 ! -regex  ".*\.bak$" -and -type f  -exec basename {} \;`
    for FILE in ${FileName}; do
        TEMPNAME=`basename $FILE`
        MDFILE1=`md5sum $2/$TEMPNAME|cut -c1-32`
        sleep 3
        MDFILE2=`md5sum $2/$TEMPNAME|cut -c1-32`
        if [  -n $MDFILE1 ] && [ $MDFILE1 = $MDFILE2 ];then
       settle  $1  $2/$TEMPNAME  $3/$TEMPNAME
        fi
    done
}

dispose decode $UPDIR $OUTDIR
#dispose copy $UPDIR $OUTDIR
dispose encryption $RETURNDIR $DOWNDIR
#dispose copy $RETURNDIR $DOWNDIR

chown -R $Company\_$Program:sftpusers $UPDIR $DOWNDIR
chown -R wps_$Company\_$Program:sftpusers $OUTDIR $RETURNDIR


本文出自 “Gavin” 博客,轉載請與作者聯系!

對文件的GPG2的處理