标签: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