概述
因公司項目由之前的ftp換位sftp,且之前的UDP函數未開發出來,使用腳本實現部分功能(sftp文件下載)。一次連接和多次連接均為指定文件名下載,下載最新的文件即下載修改時間最新的文件,因每天最多更新一份,在下載最新文件腳本中以天為單位。腳本內容如下。
一次連接

#!/bin/bash # -------------+--------------------------------- # * Filename : sftp_download_nowfile.sh # * Date : 2020-08-24 # * Author : wangjianxiong # * Description : # -------------+--------------------------------- MYPATH=$(dirname $0) MYPWD=`cd $MYPATH/../ && pwd` IP=59.255.188.30 PORT=5522 USER=ftpuser PASSWORD=!QAZ2wsx12345 SFTPDIR=/data/file/xy FILE_NAME=20200818.zip find $MYPWD/data -type f -name "*" -exec rm -rf {} \; [ -f sftp_get.sh ] && rm -rf sftp_get.sh echo "lftp -u '${USER}','${PASSWORD}' sftp://${IP}:${PORT} <<EOF" >> sftp_get.sh cat $MYPATH/../conf/list_dir | awk -F"." '{print $NF}' > new_list for i in `cat new_list` do lpath=`cd $MYPWD/data$i; pwd` rpath=$SFTPDIR$i echo "cd $rpath" >> sftp_get.sh echo "lcd $lpath" >> sftp_get.sh echo "get $FILE_NAME" >> sftp_get.sh done echo "bye" >> sftp_get.sh echo "EOF" >> sftp_get.sh chmod a+x sftp_get.sh
多次連接
for循環實現

#!/bin/bash # -------------+--------------------------------- # * Filename : sftp_download_nowfile.sh # * Date : 2020-08-24 # * Author : wangjianxiong # * Description : # -------------+--------------------------------- MYPATH=$(dirname $0) MYPWD=`cd $MYPATH/../ && pwd` IP=59.255.188.30 PORT=5522 USER=ftpuser PASSWORD=!QAZ2wsx12345 SFTPDIR=/data/file/xy FILE_NAME=20200818.zip find $MYPWD/data -type f -name "*" -exec rm -rf {} \; cat $MYPATH/../conf/list_dir | awk -F"." '{print $NF}' > new_list for i in `cat new_list` do sleep 1 lpath=`cd $MYPWD/data$i; pwd` rpath=$SFTPDIR$i lftp -u '${USER}','${PASSWORD}' sftp://${IP}:${PORT} <<EOF cd $rpath lcd $lpath get $FILE_NAME bye EOF done
下載最新文件
for 嵌套 while

#!/bin/bash # -------------+--------------------------------- # * Filename : lftp_get.sh # * Date : 2020-08-28 # * Author : wangjianxiong # * Description : # -------------+--------------------------------- MYPATH=$(dirname $0) MYPWD=`cd $MYPATH/../ && pwd` SFTPDIR=/data/file/xy find $MYPWD/data -type f -name "*" -exec rm -rf {} \; cat $MYPATH/../conf/list_dir | awk -F"." '{print $NF}' > new_list for i in `cat new_list` do lpath=`cd $MYPWD/data$i; pwd` rpath=$SFTPDIR$i i=0 while true do lftp -u 'ftpuser','!QAZ2wsx12345' sftp://59.255.188.30:5522 <<EOF mirror --newer-than='now-${i}day' --only-newer --verbose $rpath $lpath bye EOF ret=`ls $lpath` if [ "`ls -A $lpath`" = "" ]; then i=$(($i+1)) else break fi done done