對文件的GPG2的處理
阿新 • • 發佈:2017-10-18
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的處理