(需求实战_03)_shell脚本 sftp协议下载文件
文章目录
- 一、需求文档说明
- 二、脚本解释/说明
- 三、脚本内容
- 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协议下载文件相关推荐
- (需求实战_01)_shell脚本 ftp协议下载文件
文章目录 一.需求文档说明 二.脚本解释/说明 三.脚本内容 3.1. 案例脚本 3.2. 案例脚本升级 一.需求文档说明 序号 要求 说明 ① 协议 使用ftp协议远程下载 ② 文件类型 .zip ...
- java代码批量下载_Java代码实战:线程池实现批量下载文件
今天技术之家陪你一起Java代码实战:线程池实现批量下载文件: 1 创建线程池package com.cheng.webb.thread; import java.util.concurrent.Ar ...
- python实战!智能翻页批量下载文件
python爬虫遇到爬取文件内容时,需要一页页的翻页爬取,这样很是麻烦,其实可以获取每个列表信息下的文件名和文件链接,让文件名和文件链接处理为列表,保存后下载,实现智能翻页批量下载文件,本文以以京客隆 ...
- (需求实战_04)_定时压缩昨天指定文件并删除
文章目录 一.需求文档说明 二.脚本设置 三.脚本内容 一.需求文档说明 序号 要求 说明 ① 协议 使用sftp协议远程下载 ② 文件类型 .zip ③ 文件名 acd_UPIDDGWL ④ 远程下 ...
- Java从SFTP服务器下载文件一
最近对接一个需求,要用SFTP去服务器上取文件,这里记录下自己的思路. SFTP下载文件需要用到jsch的jar包,我用的是jsch-0.1.54.jar,可以到http://www.jcraft.c ...
- VC使用HTTP协议下载文件
// //功能:从网上下载文件并保存到本地 / int CMyFun::InternetGetFile(CString szUrl, CString szFileName) { szUrl.F ...
- python单击url下载网页文件_使用不带url的python脚本从网页下载文件,调用onClick函数 - javascript...
有一个网页带有链接"单击下载",单击该链接可以下载文件. 我可以通过转到网页并单击此链接来手动下载此文件,但是我需要通过python脚本下载此文件. 如果我看到源代码,则可以看到锚 ...
- 实战演习-用wse上传下载文件
jillzhang jillzhang@126.com 这几天,光忙着写程序员职场了,对wse的翻译和学习没有太大的进展,这可不太好,毕竟咱还是靠技术混饭吃的,荒废了技术怎么行!今天再上一盘有关wse ...
- 编写shell脚本-sftp上传文件
先简单的写一下shell脚本的流程. #创建一个sh文件 nano yulisao.sh #编写shell脚本命令 # 略,根据自己需要编写.示例如下 #! /bin/sh echo "请输 ...
最新文章
- 初识C语言---(3)
- 前端学习 -- 超链接
- Mybatis问题解释?
- 基于地图开发控件GMap.Net 使用 (一) 原创
- [Forward] 因为火炬,所以迟到,工资照扣
- type=file文件上传H5新特性
- java es 数据批量导入_ElasticSearch—Java批量导入导出
- java中反射机制通过字节码文件对象获取字段和函数的方法
- MySQL 创建视图
- 十进制转任意进制-数论
- Kafka 和 RocketMQ 底层存储之那些你不知道的事
- 大数据对企业竞争的作用
- virtualbox虚拟机linux共享文件夹,Virtualbox下linux虚拟机共享文件夹挂载
- 【obs-studio开源项目从入门到放弃】obs-studio项目简介和架构
- 分享一个国内可用的ChatGPT网站,免费无限制,支持AI绘画 - AI 百晓生
- ubuntu下屏幕闪烁
- python 操作 csv 编码问题,繁体字体乱码
- 不同部位长青春痘说明不同器官有毛病吗? (转自 八月的阳光)
- HyperloopTT将在中国打造首个Hyperloop超级高铁系统
- 工业企业数字化转型中的数据治理
热门文章
- (pytorch-深度学习)循环神经网络的从零开始实现
- 图片饱和度_摄影后期完全调色指南(三):饱和度与自然饱和度有什么区别?...
- 23种设计模式之工厂方法模式
- [转载]文本特征TFIDF权重计算及文本向量空间VSM表示
- DP为王——动态规划法学习笔记
- 爆测一周,22年必看最细致代码托管工具测评
- 基于MaxCompute+PAI的用户增长方案实践
- StarLake:汇量科技云原生数据湖的探索和实践
- 2020-09-01
- 赋能尖端科技 推进智能布局 |《HPC高性能计算数据存储解决方案蓝皮书》正式发布