标签: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” 博客,转载请与作者联系!
标签:shell脚本
原文地址:http://gavin0.blog.51cto.com/1359421/1973822