(需求实战_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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA实现onvif的ptz控制_使用Onvif协议进行设备PTZ云台控制

接上一篇使用Onvif协议最重要的应用就是对设备进行PTZ云台控制&#xff0c;PTZ控制包含转动、变焦等&#xff0c;这里我们主要讨论常用的转动和变焦(也就是放大缩小)流程要进行设备PTZ控制&#xff0c;我们首先需要获取到设备的Device Service Address和此设备的用户名密码前两…

DataWorks支持PyODPS类型任务

摘要&#xff1a; 昨天&#xff0c;DataWorks推出了PYODPS任务类型&#xff0c;集成了Maxcompute的Python SDK&#xff0c;可在DataWorks的PYODPS节点上直接编辑Python代码操作Maxcompute&#xff0c;也可以设置调度任务来处理数据&#xff0c;提高数据开发效率。昨天&#xff…

vue base64图片不显示_技巧 | word中插入的图片显示不完整怎么办?

已经好久没有更新了&#xff0c;都快忘记有这个公众号存在了~这几个月发生了很多事情&#xff0c;工作上的任务也迟迟没有减轻&#xff0c;之前保持的日记也已经很久没有写了。但是觉得要是没有什么用什么方式将脑袋中时不时飘过的念头记录下来的话&#xff0c;过段时间就会完全…

重磅 | 华为发布绝杀计算战略!投15亿美元打造开放生态,全球最快AI训练集群Atlas 900,绝了!...

戳蓝字“CSDN云计算”关注我们哦&#xff01; 文 | 阿晶、丹丹、王银发于上海华为HC大会现场出品 | CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09; 科技的不断发展正逐步加速智能世界的到来。一直&#xff0c;华为致力于提供经济且充裕的算力&#xff0c;力图像使…

python制作圆形按钮_C#圆形按钮,非常漂亮动态

【实例简介】C#圆形按钮&#xff0c;非常漂亮动态 Button,有源代码和例子&#xff0c;这是网上很少有的&#xff0c;兄弟们快下载呀&#xff01;【实例截图】【核心代码】PulseButton└── PulseButton├── Backup│ ├── PulseButton│ │ ├── ClassDiagram1.cd…

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

文章目录一、需求文档说明二、脚本设置三、脚本内容一、需求文档说明 序号要求说明①协议使用sftp协议远程下载②文件类型.zip③文件名acd_UPIDDGWL④远程下载目录PEDP/⑤本服务器下载存放目录/ablacklist/xmldata/Lists 二、脚本设置 命令释义说明crontab -e编辑crontab8 0 …

90后实习生,是如何成长为阿里云分布式NoSQL领域专家

摘要&#xff1a; 我是亦征&#xff0c;本名王怀远&#xff0c;现在是阿里云存储服务团队的研发&#xff0c;正值五四青年节&#xff0c;受云栖社区邀请&#xff0c;来分享下自己的成长故事。从5年前第一次进入阿里云实习到如今&#xff0c;我一直都在表格存储TableStore团队&a…

AI新时代-大神教你使用python+Opencv完成人脸解锁(附源码)

摘要&#xff1a; 好吧&#xff0c;伙计们&#xff0c;我回来了。说我拖更不写文章的可以过来用你的小拳拳狠命地捶我胸口.... 那么今天我们来讲关于使用pythonopencvface来实现人脸验证及人脸解锁。代码量同样不多&#xff0c;你可以将这些代码运用在其它一些智能领域&#xf…

java foreach并行_使用foreach在Java中迭代并行数组的漂亮方法

Sean Adkinso..9这是一个有趣的练习.我创建了一个名为ParallelList的对象,它接受可变数量的类型化列表,并且可以遍历每个索引处的值(作为值列表返回):public class ParallelList implements Iterable> {private final List> lists;public ParallelList(List... lists) {t…

zTree笔记,设置无法勾选父节点(禁用父节点)和父节点禁用时回显选中子节点时关联父节点状态

名称链接zTree APIhttp://www.treejs.cn/v3/api.phpzTree Demohttp://www.treejs.cn/v3/demo.php#_101 最近又用到了zTree&#xff0c;虽然zTree的APi已经很全很方便很易懂了&#xff0c;但是难免有的方法找不到。为了方便他人方便自己&#xff0c;做下笔记记录下 zTree笔记1 …

你需要知道的那些 redis 数据结构(前篇)

戳蓝字“CSDN云计算”关注我们哦&#xff01; 作者 | 饿了么物流技术团队来源 | CSDN 企业博客redis 对于团队中的同学们来说是非常熟悉的存在了&#xff0c;我们常用它来做缓存、或是实现分布式锁等等。对于其 api 中提供的几种数据结构&#xff0c;大家也使用得得心应手。api…

Tensorflow快餐教程(6) - 矩阵分解

摘要&#xff1a; 特征分解&#xff0c;奇异值分解&#xff0c;Moore-Penrose广义逆矩阵分解特征向量和特征值我们在《线性代数》课学过方阵的特征向量和特征值。定义&#xff1a;设A∈FnnA∈Fnn是n阶方阵。如果存在非零向量X∈Fn1X∈Fn1使AXλXAXλX对某个常数λ∈Fλ∈F成立&…

ZTree的全选 反选 全不选 取消 清空

全选 //全选$(#c_all).on(click,function (e) {var zTree $.fn.zTree.getZTreeObj("treeMenu");//得到tree对象 treeMenu是我的treeidvar node zTree.getNodes();//得到全部节点var nodes zTree.transformToArray(node);//全部节点转换成数组arrayvar checkNode …

对数周期天线hfss建模_HFSS也有金手指,FADDM招式详解

FADDM(Finite Array Domain Decomposition Method)即有限大阵区域分解法是HFSS针对周期阵列天线的一种高效仿真方法,这种方法不仅能提升天线阵列建模和求解的效率&#xff0c;还能保证仿真结果的精准度。FADDM的优势同样的硬件可求解更大规模的阵列与在HFSS全模型求解具有同样精…

Tensorflow快餐教程(7) - 梯度下降

摘要&#xff1a; 梯度下降梯度下降学习完基础知识和矩阵运算之后&#xff0c;我们再回头看下第一节讲的线性回归的代码&#xff1a;import tensorflow as tf import numpy as nptrX np.linspace(-1, 1, 101) trY 2 * trX np.random.randn(*trX.shape) * 0.33 # 创建一些线性…

php网页执行流程,PHP程序的执行流程

PHP程序的执行流程为了以后能开发PHP扩展&#xff0c;就一定要了解PHP的执行顺序。这篇文章就是为C开发PHP扩展做铺垫。Web环境我们假设为Apache。在编译PHP的时候,为了能够让Apache支持PHP&#xff0c;我们会生成一个mod_php5.so的模块。Apache加载这个模块&#xff0c;在url访…

腾讯物联网操作系统正式开源,最小体积仅1.8 KB

9月18日&#xff0c;腾讯宣布将开源自主研发的轻量级物联网实时操作系统TencentOS tiny。相比市场上其它系统&#xff0c;腾讯TencentOS tiny在资源占用、设备成本、功耗管理以及安全稳定等层面极具竞争力。该系统的开源可大幅降低物联网应用开发成本&#xff0c;提升开发效率&…

云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍

摘要&#xff1a; 本文带大家简单理解阿里巴巴Java开发手册中的规约内容以及P3C项目&#xff0c;可以帮助开发者扫描出所有潜在的代码隐患。在中间也聊了一些对于不同语言设计的理解&#xff0c;如何去看待语言的设计&#xff0c;其实是我们去学习一个语言的核心。演讲嘉宾简介…

你的数据安全么?Hadoop再曝安全漏洞| 黑客利用Hadoop Yarn资源管理系统未授权访问漏洞进行攻击

摘要&#xff1a; 4月30日&#xff0c;阿里云发现&#xff0c;俄罗斯黑客利用Hadoop Yarn资源管理系统REST API未授权访问漏洞进行攻击。 Hadoop是一款由Apache基金会推出的分布式系统框架&#xff0c;它通过著名的 MapReduce 算法进行分布式处理&#xff0c;Yarn是Hadoop集群的…

linux建立软连接

格式命令ln -s 源文件的绝对路径 目标文件的绝对路径ln -s /opt/libreoffice6.3/program/soffice /usr/bin/soffice需求把soffice 和/usr/bin/soffice 建立软连接现在执行命令/opt/libreoffice6.3/program/soffice --headless --invisible --convert-to pdf 3.19m.doc建立软连接…