文章目录

  • 一、需求文档说明
  • 二、脚本解释/说明
  • 三、脚本内容
    • 3.1. 案例脚本
    • 3.2. 案例脚本升级
一、需求文档说明
序号 要求 说明
协议 使用sftp协议远程下载
文件类型 .zip
文件名 UPDATA
远程下载目录 PEDP/
本服务器下载存放目录 /app/xmldata/Lists
二、脚本解释/说明
脚本拆解 释义说明 执行命令
日志文件名拼接fname 存放全部日志目录+随机生成以日期规则.log结尾的文件
错误日志拼接elog 存放异常日志目录+随机生成以日期规则.log结尾的文件
sftp连接格式 lftp -u 用户名,密码 sftp://ip地址:端口 <<EOF > "$fname" 2>&1
进入到指定目录 打开本机目录用lcd 打开远程目录用cd
下载指定文件 mget 文件名
下载指定类型文件 mget *.gz 或者 mget *.zip 或者 mget *.tar
下载指定文件规则,例如:下载以dir开头,并且以.f 的全量文件 或者.i结尾的增量文件 mget dir.*.i
mget dir.*.f
异常日志输出 把常见异常归纳一下,遇到后将异常信息输出到指定目录下面,文件名按照一定规则随即自动生成
三、脚本内容
3.1. 案例脚本
#!/bin/bash
fdate=$(date +%Y%m%d%H%M%S)
flog='/app/ymjc/logs/download-'
elog='/app/ymjc/logs/errors-'fname=$flog$fdate'.log'
ename=$elog$fdate'.log'#格式:lftp -u 用户名,密码 sftp://ip地址:端口 <<EOF > "$fname" 2>&1
lftp -u mysftp,123456 sftp://192.168.0.110:22 <<EOF > "$fname" 2>&1
set xfer:clobber on
cd /send/ods/20201226
lcd /app/data
mget UPDATA.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: 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
3.2. 案例脚本升级

创建conf文件夹,用来存放配置文件
创建sftp_conn.conf配置文件,内容分隔符 |

mkdir conf
vim sftp_conn.conf
#内容不做限制
192.168.0.110|mysftp|123456|/send/ods/|22|

升级后的脚本

#!/bin/bash
fdate=$(date +%Y%m%d%H%M%S)
flog='/app/ymjc/logs/download-'
elog='/app/ymjc/logs/errors-'
fname=$flog$fdate'.log'
ename=$elog$fdate'.log'line=`cat ./conf/sftp_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 sftp://$host:$sftp_port <<EOF > "$fname" 2>&1
set xfer:clobber on
cd $remote_path/$exec_date
lcd $local_datadir
mget UPDATA.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: 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协议下载文件相关推荐

  1. (需求实战_01)_shell脚本 ftp协议下载文件

    文章目录 一.需求文档说明 二.脚本解释/说明 三.脚本内容 3.1. 案例脚本 3.2. 案例脚本升级 一.需求文档说明 序号 要求 说明 ① 协议 使用ftp协议远程下载 ② 文件类型 .zip ...

  2. java代码批量下载_Java代码实战:线程池实现批量下载文件

    今天技术之家陪你一起Java代码实战:线程池实现批量下载文件: 1 创建线程池package com.cheng.webb.thread; import java.util.concurrent.Ar ...

  3. python实战!智能翻页批量下载文件

    python爬虫遇到爬取文件内容时,需要一页页的翻页爬取,这样很是麻烦,其实可以获取每个列表信息下的文件名和文件链接,让文件名和文件链接处理为列表,保存后下载,实现智能翻页批量下载文件,本文以以京客隆 ...

  4. (需求实战_04)_定时压缩昨天指定文件并删除

    文章目录 一.需求文档说明 二.脚本设置 三.脚本内容 一.需求文档说明 序号 要求 说明 ① 协议 使用sftp协议远程下载 ② 文件类型 .zip ③ 文件名 acd_UPIDDGWL ④ 远程下 ...

  5. Java从SFTP服务器下载文件一

    最近对接一个需求,要用SFTP去服务器上取文件,这里记录下自己的思路. SFTP下载文件需要用到jsch的jar包,我用的是jsch-0.1.54.jar,可以到http://www.jcraft.c ...

  6. VC使用HTTP协议下载文件

    // //功能:从网上下载文件并保存到本地 / int CMyFun::InternetGetFile(CString szUrl, CString szFileName) {     szUrl.F ...

  7. python单击url下载网页文件_使用不带url的python脚本从网页下载文件,调用onClick函数 - javascript...

    有一个网页带有链接"单击下载",单击该链接可以下载文件. 我可以通过转到网页并单击此链接来手动下载此文件,但是我需要通过python脚本下载此文件. 如果我看到源代码,则可以看到锚 ...

  8. 实战演习-用wse上传下载文件

    jillzhang jillzhang@126.com 这几天,光忙着写程序员职场了,对wse的翻译和学习没有太大的进展,这可不太好,毕竟咱还是靠技术混饭吃的,荒废了技术怎么行!今天再上一盘有关wse ...

  9. 编写shell脚本-sftp上传文件

    先简单的写一下shell脚本的流程. #创建一个sh文件 nano yulisao.sh #编写shell脚本命令 # 略,根据自己需要编写.示例如下 #! /bin/sh echo "请输 ...

最新文章

  1. 初识C语言---(3)
  2. 前端学习 -- 超链接
  3. Mybatis问题解释?
  4. 基于地图开发控件GMap.Net 使用 (一) 原创
  5. [Forward] 因为火炬,所以迟到,工资照扣
  6. type=file文件上传H5新特性
  7. java es 数据批量导入_ElasticSearch—Java批量导入导出
  8. java中反射机制通过字节码文件对象获取字段和函数的方法
  9. MySQL 创建视图
  10. 十进制转任意进制-数论
  11. Kafka 和 RocketMQ 底层存储之那些你不知道的事
  12. 大数据对企业竞争的作用
  13. virtualbox虚拟机linux共享文件夹,Virtualbox下linux虚拟机共享文件夹挂载
  14. 【obs-studio开源项目从入门到放弃】obs-studio项目简介和架构
  15. 分享一个国内可用的ChatGPT网站,免费无限制,支持AI绘画 - AI 百晓生
  16. ubuntu下屏幕闪烁
  17. python 操作 csv 编码问题,繁体字体乱码
  18. 不同部位长青春痘说明不同器官有毛病吗? (转自 八月的阳光)
  19. HyperloopTT将在中国打造首个Hyperloop超级高铁系统
  20. 工业企业数字化转型中的数据治理

热门文章

  1. (pytorch-深度学习)循环神经网络的从零开始实现
  2. 图片饱和度_摄影后期完全调色指南(三):饱和度与自然饱和度有什么区别?...
  3. 23种设计模式之工厂方法模式
  4. [转载]文本特征TFIDF权重计算及文本向量空间VSM表示
  5. DP为王——动态规划法学习笔记
  6. 爆测一周,22年必看最细致代码托管工具测评
  7. 基于MaxCompute+PAI的用户增长方案实践
  8. StarLake:汇量科技云原生数据湖的探索和实践
  9. 2020-09-01
  10. 赋能尖端科技 推进智能布局 |《HPC高性能计算数据存储解决方案蓝皮书》正式发布