(需求实战_01)_shell脚本 ftp协议下载文件
生活随笔
收集整理的這篇文章主要介紹了
(需求实战_01)_shell脚本 ftp协议下载文件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、需求文檔說明
- 二、腳本解釋/說明
- 三、腳本內容
- 3.1. 案例腳本
- 3.2. 案例腳本升級
一、需求文檔說明
| ① | 協議 | 使用ftp協議遠程下載 |
| ② | 文件類型 | .zip |
| ③ | 文件名 | ac_UPpp |
| ④ | 遠程下載目錄 | 用戶根目錄(不需要切換目錄) |
| ⑤ | 本服務器下載存放目錄 | /blacklist/xmldata/Lists |
二、腳本解釋/說明
| ① | 日志文件名拼接fname | 存放全部日志目錄+隨機生成以日期規則.log結尾的文件 |
| ② | 錯誤日志拼接elog | 存放異常日志目錄+隨機生成以日期規則.log結尾的文件 |
| ③ | sftp連接格式 | lftp -u 用戶名,密碼 ftp://ip地址:端口 <<EOF > "$fname" 2>&1 |
| ④ | 進入到指定目錄 | 打開本機目錄用lcd 打開遠程目錄用cd |
| ⑤ | 下載指定文件 | mget 文件名 |
| ⑥ | 下載指定類型文件 | mget *.gz 或者 mget *.zip 或者 mget *.tar |
| ⑦ | 下載指定文件規則,例如:下載以dir開頭,并且以.f 的全量文件 或者.i結尾的增量文件 | mget dir.*.i mget dir.*.f |
| ⑧ | 異常日志輸出 | 把常見異常歸納一下,遇到后將異常信息輸出到指定目錄下面,文件名按照一定規則隨即自動生成 |
三、腳本內容
前提:安裝lftp yum install lftp
3.1. 案例腳本
#!/bin/bash fdate=$(date +%Y%m%d%H%M%S) flog='/app/blacklist/logs/accuitydownload-' elog='/app/blacklist/logs/errors-'fname=$flog$fdate'.log' ename=$elog$fdate'.log'lftp -u ftpuser,123456 ftp://192.168.0.110:21 <<EOF > "$fname" 2>&1 set xfer:clobber on lcd /app/data cd /send/ods/20201226 mget UPIDGWL.ZIP by EOFif grep -i "Login failed" "$fname" > /dev/null then echo "ERROR: Login failed" >> "$ename" fi if grep -i "Not connected" "$fname" > /dev/null then echo "ERROR: Cannot connect to the destination" >> "$ename" fi if grep -i "No such file" "$fname" > /dev/null then echo "ERROR: Cannot change directory. No such file or directory." >> "$ename" fi if grep -i "No such directory" "$fname" > /dev/null then echo "ERROR: Cannot change remote directory. No such file or directory." >> "$ename" fi if grep -i "File or Directory does not exist" "$fname" > /dev/null then echo "ERROR: Cannot transfer. File or Directory does not exist" >> "$ename" fi3.2. 案例腳本升級
創建conf文件夾,用來存放配置文件
創建sftp_conn.conf配置文件,內容分隔符 |
升級后的腳本
#!/bin/bash fdate=$(date +%Y%m%d%H%M%S) flog='/app/blacklist/logs/accuitydownload-' elog='/app/blacklist/logs/errors-'fname=$flog$fdate'.log' ename=$elog$fdate'.log'line=`cat ./conf/ftp_conn.conf` host=`echo $line|awk -F "|" '{print $1}'` username=`echo $line|awk -F "|" '{print $2}'` password=`echo $line|awk -F "|" '{print $3}'` remote_path=`echo $line|awk -F "|" '{print $4}'` sftp_port=`echo $line|awk -F "|" '{print $5}'`exec_date=`date -d "0 days ago" +%Y%m%d` local_datadir=/app/data#echo $line #echo $host #echo $username #echo $password #echo $remote_path #echo $exec_date #echo $local_datadirlftp -u $username,$password ftp://$host:$sftp_port <<EOF > "$fname" 2>&1 set xfer:clobber on lcd $local_datadir cd $remote_path/$exec_date mget UPIDGWL.ZIP by EOFif grep -i "Login failed" "$fname" > /dev/null then echo "ERROR: Login failed" >> "$ename" fi if grep -i "Not connected" "$fname" > /dev/null then echo "ERROR: Cannot connect to the destination" >> "$ename" fi if grep -i "No such file" "$fname" > /dev/null then echo "ERROR: Cannot change directory. No such file or directory." >> "$ename" fi if grep -i "No such directory" "$fname" > /dev/null then echo "ERROR: Cannot change remote directory. No such file or directory." >> "$ename" fi if grep -i "File or Directory does not exist" "$fname" > /dev/null then echo "ERROR: Cannot transfer. File or Directory does not exist" >> "$ename" fi(企業內部需求實戰_03)_shell腳本 sftp協議下載文件
https://gblfy.blog.csdn.net/article/details/103875246
總結
以上是生活随笔為你收集整理的(需求实战_01)_shell脚本 ftp协议下载文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: idea集成Activiti Desig
- 下一篇: 怎样把间隔的几个commit整理成1个呢