背景是 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 &
           chown -R $Company\_$Program:sftpusers $UPDIR $DOWNDIR
           chown -R wps_$Company\_$Program:sftpusers $OUTDIR $RETURNDIR
        fi
    done
}

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