在写云缴费项目的过程中,需要用Ftp传对账文件,由于对账文件在AP上,所以在WEB上装了Nginx,打算利用NginX转发ftp请求,但是奇怪的是,怎么都调不通,这个有空抽一篇幅详细讲解。由于项目着急上线,所以采取了shell脚本模式。
由于对账文件的存储模式采取的是public path/8位日期/files模式,所以该shell脚本需要能够实现传递前一天的文件到第三方服务器上,脚本比较简单,如下:
#!/bin/bash
NOW_PATH=/home/tomcat/data/
DATE_SET=`date -d -1day +%Y%m%d`
cd $NOW_PATH
mkdir ${DATE_SET}
NOW_FTP_PATH=$NOW_PATH/${DATE_SET}
GET_DATA_PATH=/home/ipsp/toFtpFile
GET_USER=ipsp
GET_PASSWORD="密码"
GET_IP=128.1.136.195
GET_PORT=21
# 开始取文件
ftp -ivn <<EOF
open $GET_IP $GET_PORT
user $GET_USER $GET_PASSWORD
binary
cd $GET_DATA_PATH/${DATE_SET}
lcd $NOW_FTP_PATH
mget *
bye
EOF
PUT_PATH=/home/social/ftp
USER=social
PASSWD="密码"
IP=128.2.136.128
PORT=21
#上传文件到FTP服务器
ftp -ivn <<EOF
open $IP $PORT
user $USER $PASSWD
binary
cd $PUT_PATH
lcd $NOW_FTP_PATH
mput *
bye
EOF
#判定文件是否上传成功
echo "Upload successful"
[ $? -eq 0 ] && echo "Upload $DATE_SET's files to School successful." >>$NOW_PATH/ftp.log || echo "Upload files failed" >>$NOW_PATH/ftp.log
由于AP上的文件是不删除的,所以取到本地以后,直接传给第三方即可,传完以后,再删除本地路径下的文件即可,如有漏传,可采取手工模式脚本,更改执行(删除本地路径下的文件的命令未添加 可根据实际需要增加)。
至于脚本如何执行,自然采取linux的contab命令,定时执行即可。