shell脚本采集ftp数据样例

shell脚本上传文件到ftp服务器,shell脚本实现FTP自动上传文件 -----多个文件-----#!/bin/bashftp -n<open 172.20.10.242user logftp logftpbinarycd /data/ftp/pcidata/pcilogftp/AppFile/loglcd /data/localaccpromptmget *.gzclosebye!----单个文件-----#!/bin/bashftp -n<open ... 阅读详情
#!/bin/bash
#author zcb
# *************************************
# 功能描述:
# 	检查从ftp 下载数据情况
# 输出文件:
#	remain_${month_id}_no_uploaded.txt	未上传到ftp列表
#	remain_head.txt				未上传到ftp列表-表头
#	remain_${month_id}.txt			未下载或者未下载到本地列表
# *************************************

month_id=$1
if [ -z "$1" ]
then
	month_id=`date -d "-1 month" +%Y%m`
fi
next_month_id=`date -d "${month_id}15 +1 month" +%Y%m`

selfpath=$(cd $(dirname $0); pwd)
cd $selfpath

>ftp_month_ports.list

for filename in `cat ftp_normal_ports.list`
do
  echo $filename "----"
  filename_prefix=${filename%_*}
  filename_head=${filename:0:6} 
  filename_month=${filename:0-9:6}
  filename_prov=${filename:0-3}
  echo $filename_prefix
  echo $filename_head
  echo $filename_month
  echo $filename_prov
  if [ "$filename_prov" = "099" ]; then
      echo $filename_prefix"_"$month_id"099" >> ftp_month_ports.list
  else
 
      for prov_id in 010 011 013 017 018 019 030 031 034 036 038 050 051 059 070 071 074 075 076 079 081 083 084 085 086 087 088 089 090 091 097; do
          if [ "$filename_head" = "C01013" ]; then
             last_day=`cal ${month_id:5} ${month_id:0:4}|xargs|awk '{print $NF}'`
             echo $filename_prefix"_"$month_id$last_day$prov_id >> ftp_month_ports.list
          elif [[ "$filename_head" = "C01125" || "$filename_head" = "C01126" ]]; then
	    echo $filename_prefix"_"$next_month_id$"15"$prov_id >> ftp_month_ports.list
	  else
             echo $filename_prefix"_"$month_id$prov_id >> ftp_month_ports.list
          fi
      done
  fi
done


echo `date +"%F %T"` 连接ftp获取文件列表 start
ftp -niv <<- EOF 
open 192.168.1.18   
user user_name passwd
bin 
cd month
ls C01*${month_id}* ftp_ports_${month_id}.list.a
ls C01*${next_month_id}* ftp_ports_${month_id}.list.b
bye   
EOF

echo `date +"%F %T"` 连接ftp获取文件列表 end

cat ftp_ports_${month_id}.list.a | grep -v C01125 | grep -v C01126 > ftp_ports_${month_id}.list
cat ftp_ports_${month_id}.list.b | grep -e C01125 -e C01126 >> ftp_ports_${month_id}.list

rm -f ftp_ports_${month_id}.list.a ftp_ports_${month_id}.list.b

> file_checkresults_${month_id}.txt

ls -l /mnt/sd03/data/C01*${month_id}*|grep -v MD5 > file_collect_${month_id}.txt
ls -l /mnt/sd02/data/data_month/C01*${month_id}*|grep -v MD5 > file_collect_${month_id}.txt
ls -l /mnt/sd07/data/C01*${month_id}*|grep -v MD5 >> file_collect_${month_id}.txt
ls -l /mnt/sd04/data/C01*${month_id}*|grep -v MD5 >> file_collect_${month_id}.txt
ls -l /mnt/sd05/data/C01*${month_id}*|grep -v MD5 | grep -v C01125 | grep -v C01126 >> file_collect_${month_id}.txt
ls -l /mnt/sd05/data/C01*${next_month_id}*|grep -v MD5 | grep -e C01125 -e C01126 >> file_collect_${month_id}.txt
file=`cat ftp_month_ports.list`

echo `date +"%F %T"` 开始对比大小
for filename in $file
do
	get_date=`grep ${filename} file_collect_${month_id}.txt|awk '{print $6,$7,$8}'`
	file_size=`grep ${filename} file_collect_${month_id}.txt|awk '{print $5}'`
	up_date=`grep ${filename} ftp_ports_${month_id}.list|grep -v MD5|awk '{print $6,$7,$8}'`
	up_size=`grep ${filename} ftp_ports_${month_id}.list|grep -v MD5|awk '{print $5}'`
	if [ ! -n "${up_size}" ]; then  
	  up_size=0
	fi
	if [ ! -n "${file_size}" ]; then
	  file_size=0
	fi
	chaa=$((${up_size} - ${file_size}))
	echo ${filename}"--"${file_size}" ------ "${up_size}" ------- "$chaa
	cha=$[${up_size} - ${file_size}]
	echo ${filename}"|"${file_size}"|"${up_size}"|"${cha} >> file_checkresults_${month_id}.txt
done

cat  ${selfpath}/file_checkresults_${month_id}.txt |awk -F '|' '{if($3==0){print $1"|"$2"|"$3"|"$4} }' > ${selfpath}/remain_${month_id}_no_uploaded.txt
cat  ${selfpath}/file_checkresults_${month_id}.txt |awk -F '|' '{if($3==0){print $1} }' | \
gawk -F "_" '{print $1}' | sort | uniq > ${selfpath}/remain_head.txt
cat  ${selfpath}/file_checkresults_${month_id}.txt |awk -F '|' '{if($3!=0 && $4 > 0){print $1"|"$2"|"$3"|"$4} }' > ${selfpath}/remain_${month_id}.txt

echo `date +%F\ %T` 未下载文件 头 ========================
cat ${selfpath}/remain_${month_id}.txt
echo `date +%F\ %T` 未下载文件 尾 ========================
echo `date +"%F %T"` 结束

#########################################################################################
# 开始下载数据

echo `date +"%F %T"` 开始从ftp下载数据到 /mnt/sd02/data/data_month
stime=`date +%s`

for file in $(cat remain_${month_id}.txt |grep -v "MD5" | grep -v "C0105[2-9]"| gawk -F '|' '/C010[0-1]/{print $1}')
do

        fileName=$(grep ${file} remain_${month_id}.txt|grep -v "MD5"|awk -F '|' '{print $1}')
        fileSize=$(grep ${file} remain_${month_id}.txt|grep -v "MD5"|awk -F '|' '{print $3}')

        echo "`date +%Y-%m-%d\ %H:%M:%S`--采集文件信息:"
        echo "`date +%Y-%m-%d\ %H:%M:%S`--文件名:$fileName"
        echo "`date +%Y-%m-%d\ %H:%M:%S`--文件大小:$fileSize"

ftp -niv <<- EOF
open 192.168.1.18
user user_name passwd
lcd /mnt/sd02/data/data/data_month
cd month
passive
bin
mget ${fileName}*   
bye   
EOF

done

echo `date +"%F %T"` 结束从ftp下载数据到 /mnt/sd02/data

echo `date +"%F %T"` 开始从ftp下载数据到 /mnt/sd03/data
stime=`date +%s`

for file in $(cat remain_${month_id}.txt |grep -v "MD5" | grep -v "C0105[2-9]"| gawk -F '|' '/C010[2-5]/{print $1}')
do

        fileName=$(grep ${file} remain_${month_id}.txt|grep -v "MD5"|awk -F '|' '{print $1}')
        fileSize=$(grep ${file} remain_${month_id}.txt|grep -v "MD5"|awk -F '|' '{print $3}')

        echo "`date +%Y-%m-%d\ %H:%M:%S`--采集文件信息:"
        echo "`date +%Y-%m-%d\ %H:%M:%S`--文件名:$fileName"
        echo "`date +%Y-%m-%d\ %H:%M:%S`--文件大小:$fileSize"

ftp -niv <<- EOF
open 192.168.1.18
user user_name passwd
lcd /mnt/sd03/data
cd month
passive
bin
mget ${fileName}*   
bye   
EOF

done

echo `date +"%F %T"` 结束从ftp下载数据到 /mnt/sd03/data

echo `date +"%F %T"` 开始从ftp下载数据到 /mnt/sd04/data

for file in $(cat remain_${month_id}.txt |grep -v "MD5" | grep -v "C0105[0-1]"| gawk -F '|' '/C010[5-9]/{print $1}')
do

        fileName=$(grep ${file} remain_${month_id}.txt|grep -v "MD5"|awk -F '|' '{print $1}')
        fileSize=$(grep ${file} remain_${month_id}.txt|grep -v "MD5"|awk -F '|' '{print $3}')

        echo "`date +%Y-%m-%d\ %H:%M:%S`--采集文件信息:"
        echo "`date +%Y-%m-%d\ %H:%M:%S`--文件名:$fileName"
        echo "`date +%Y-%m-%d\ %H:%M:%S`--文件大小:$fileSize"

ftp -niv <<- EOF
open 192.168.1.18
user user_name passwd
lcd /mnt/sd04/data
cd month
passive
bin
mget ${fileName}*   
bye   
EOF

done

echo `date +"%F %T"` 结束从ftp下载数据到 /mnt/sd04/data

echo `date +"%F %T"` 开始从ftp下载数据到 /mnt/sd05/data

for file in $(cat remain_${month_id}.txt | gawk -F '|' '/C011[0-2]/{print $1}')
do
        fileName=$(grep ${file} remain_${month_id}.txt | awk -F '|' '{print $1}')
        fileSize=$(grep ${file} remain_${month_id}.txt | awk -F '|' '{print $3}')

        echo "`date +%Y-%m-%d\ %H:%M:%S`--采集文件信息:"
        echo "`date +%Y-%m-%d\ %H:%M:%S`--文件名:$fileName"
        echo "`date +%Y-%m-%d\ %H:%M:%S`--文件大小:$fileSize"

ftp -niv <<- EOF
open 192.168.1.18
user user_name passwd
lcd /mnt/sd05/data
cd month
passive
bin
mget ${fileName}*
bye
EOF

done

etime=`date +%s`
s=`echo "scale=0; ($etime - $stime)%60" | bc`
m=`echo "scale=0; ($etime - $stime)/60%60" | bc`
h=`echo "scale=0; ($etime - $stime)/60/60" | bc`

echo `date +"%F %T"` 结束从ftp下载数据到 /mnt/sd05/data
echo `date +"%F %T"` end 耗时 $h 小时 $m 分钟 $s 秒

 

Linux下Shell编程与FTP文件自动化采集指南 htmltable {th, td {th {pre {简介:本文介绍在Linux环境下,如何利用shell脚本和FTP协议来自动化地采集文件。首先解释Shell编程和FTP的基础知识,然后通过具体的步骤和示例,讲解如何编写脚本来连接FTP服务器、下载文件、设置定时任务以及执行安全措施。最后,提供一个示例脚本以及相关配置文件的说明,帮助读者构建自己的自动化文件采集系统。 阅读详情

相关推荐

命令行下获取远程FTP目录文件

前提:已获知FTP的相关登录信息 介绍:该脚本是为解决相关工程定时同步获取ftp相关文件而编写的;简单高效,并且可行。需要下载资源的同学自行修改相关IP、用户名/密码、指定文件名以及相关路径 使用方法: (1)运行FtpCommand.bat (2)再运行GetFtpCMBKEY.bat

shell 获取 ftp服务最新文件的文件

#!/bin/bash # 连上ftp 服务器, 相关的文件列表下载到本地 fileList.txt ftp -v -n 192.168.20.8<<EOF user 用户名 密码 dir /指定目录/*部分文件名* fileList.txt bye EOF # awk '{print $9}' 用法 # 例如 : -rw------- 1 1002 50 28519125 Jul 22 07:06 package-20210722-1506.tar.gz

u014298282的博客 2293

STM32CubeIDE中文注释变乱码终极解决方案:3步设置永久解决锟斤拷问题!

你是否在STM32CubeIDE中遇到过这样的崩溃场景?——精心编写的中文注释在重新生成代码后变成“锟斤拷”乱码,不仅影响代码可读性,反复修改更是浪费大量时间!作为STM32开发者,我曾被这个问题困扰许久,试过修改软件设置、工程编码却始终治标不治本。直到发现这个基于Java环境变量的终极解决方案,才彻底解决了中文乱码难题。

smart_boy__的博客 2968

shell脚本通过ftp获取文件

shell脚本通过ftp获取文件 #!/usr/bin/bash #T-1日期 day=`date -d "1 days ago" +"%Y%m%d"` #文件名 fileName="file"${day:2:8} #注:$(day:2:8),截取字符串 #返回文件 backFile="back" #想将ftp文件下载到那个目录,就进入那个目录 cd /home/java/file/ ...

周国良的博客 5290

uniapp原生安卓插件开发之路

声明: 我的功能需求:全局悬浮框,也就是在其他应用上依旧能悬浮。查遍uni文档,无法实现,甚至native.js也无法实现,无奈只能走上原生插件开发这条不归路了。(吐槽:天天写前端js,突然写了下android简直要炸,public static String啥的,var不香嘛,不过别人严谨肯定还是有别人道理的,加油吧,争取能入个门!) 本人不懂安卓开发,完全安卓小白,所以安卓方面可能表达的不是很好,安卓代码可能写的不优美,但我功能最终还是实现了。但是为了需求,能力总能被“逼”出来。有描述错误的还望指正

Jone's Area 1万+

基于 MATLAB 的综合能源系统建模:全面解析与案例应用 

本文详细介绍了基于 MATLAB 的综合能源系统建模相关知识,包括 MATLAB 在综合能源建模中的优势、综合能源系统各组件和网络的建模方法,并通过园区综合能源系统的案例展示了从建模到优化调度求解以及结果分析的全过程。在当今全球能源格局深刻变革的背景下,综合能源系统(Integrated Energy System,IES)作为一种创新的能源供应体系,整合了多种能源形式,如电力、热力、燃气等,以实现能源的高效生产、传输、分配和利用。需要考虑燃气的压力、流量特性以及管道的阻力特性等。

qq_57128262的博客 1336

Linux shell脚本实现FTP远程文件获取

# vim mySync.sh #!/bin/sh FTPSERVER=192.168.111.200 BASEDIR="`dirname $0`" cd "$BASEDIR" DIR="`pwd`" cd - > /dev/null #session1 echo "ftp session1:" ftp -n op

sunny05296的博客 6895

EPLAN电气设计精华 -模拟量传感器画法全解

本文介绍了EPLAN中模拟量压力传感器的标准画法要点,重点解析了电流型(4-20mA)、电压型(0-10V/0-5V)和特定应用型三种传感器的核心特点、典型符号、接线方式及应用场景。文章提供了EPLAN设备标识符示例,并分享了一个实际项目案例(XJC-Y01-20-4M传感器配合XJC-608T-F变送器和GSEE.GXLK-AI4S-I模块的应用),强调绘制前查阅技术资料的重要性。内容简明实用,有助于规范电气设计中的传感器绘制。

Qinmingyue13的博客 1183

shell操作典型案例--FTP操作

从FTP服务器上下载文件或上传文件到FTP服务器是生产环境中比较常见的场景之一。 shell操作FTP的方式整理如下: 思路一:使用shell调用ftp等客户端   使用FTP方式,通过shell调用ftp等客户端,从而完成FTP文件的上传、下载等操作。 方式一:ftp方式 一个基本的ftp工具,需安装ftp(yum -y install ftp,后同)。一个样例如下: ####...

weixin_33859665的博客 617

《UDS协议从入门到精通》系列——图解0x83:访问时间参数

详细介绍UDS协议0x83服务,目标ECU的时序参数设置有哪些注意点?

车载系统攻城狮 2138

机器学习特征选择-t检验

在特征选择的过程中通过计算检验统计量值,比较特征之间的统计量的大小,并降序排列,选取统计值较高的特征,从而起到去除差别小的特征(此差别小的特征难以区分不同的额类别)的目的。 以t检验(Student's t test)为例: 假设检验 通过比较两类样本的随机变化,通过计算其p值决定是否拒绝零假设,也即是说:通过计算p值,若p值小于某一阈值则认为两个样本具有显著差异,两个样本是不同的,此时拒绝...

heda3的博客 6700

hive_通过yyyymm格式的变量,获取前12个月以及每月最后一天的日期变量

通过yyyymm格式的变量,获取前12个月以及每月最后一天的日期变量 --获得12个月的维表(每月+每月最后一天) drop table temp_dual1; create table temp_dual1 (id string); insert into temp_dual1 values(${month_id}||'01'); drop table temp_purchase_RESERVE_${month_id}; create table temp_purchase_RESERVE_${month

学大数据的小学生 3884

大模型之Spring AI实战系列(二十一):Spring AI + MCP + 本地文件系统实战指南

在上一篇文章中,我们学习了如何使用 Spring AI 集成 Model Context Protocol (MCP),并通过 Brave Search 实现了互联网搜索能力的接入。本文将继续深入 Spring AI 的 MCP 实战能力,介绍如何将 **本地文件系统** 封装为 LLM 可调用的工具

寻道AI,探索AI无限可能! 2522

shell脚本之ftp命令

shell脚本之ftp命令

techenliu的博客 3273

Mac电脑安装burp suite2024版本记录

下载最新版本burpsuitloader-XXX-all.jar,改名为burpsuitloader.jar。目录下,修改vmoptions.txt文件,新增以下内容,如果keygen不是这个名称的话,需要修改。,点击license左侧的copy复制它,然后手动从启动台启动burpsuite。,复制如下命令到终端即可(要加双引号,不然目录中空格会导致命令截断)再复制激活响应信息到burpsuite中即可激活。后续运行burp直接从启动台运行即可。将如下框的信息复制到激活器中。输入后下一步,点击手动激活。

墨痕诉清风的博客 908

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

linux脚本中使用ftp,在shell脚本中使用ftp的方法分享

有时,我们需要通过ftp传送文件到另一台机器。通常情况下,可以通过交互式的命令行来完成,但对于数据量较多的情况来讲,这样的操作会很烦琐。此时,可以写一段shell脚本,实现ftp文件的自动传输即可。可能的问题在shell脚本中用FTP传输文件,会要求输入密码才可能操作ftp服务器。典型的FTP客户端程序在Unix,Linux,Solaris和NetBSD系统中,会从/dev/tty终端接收FTP密...

weixin_36155610的博客 3098

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Shell脚本FTP获取远程主机文件的操作

shell 定时取文件脚本,可以修改成各种取数,或者校验脚本

moscot_wu的博客 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Shell脚本实现FTP上传下载文件

Linux下使用Shell脚本实现FTP自动上传和下载文件Linux下使用Shell脚本实现FTP自动上传和下载文件 登录FTP实现下载文件功能 批量下载脚本代码 下载单个文件脚本代码 登录FTP实现上传文件功能 批量上传脚本代码 上传单个文件脚本代码 命令解释 登录FTP 输入FTP用户名和密码 通过binary命令传输文件 切换散列符号 打印 切换目录 切换交互式提示 文件传输 断开连接 分界符标志

煊琦的优快云小窝 4万+

linux系统下用shell脚本创建FTP帐号

以下为SHELL脚本创建一个比较完整的FTP帐号,包括:   1) 新增FTP帐户和目录   2) 修改FTP帐户密码   3) 在FTP帐户目录下,新建三个子目录,存放不同数据   4) 目录权限置为可读写 使用说明:    1) 创建新sh文件(如:addFTPAcc.sh), 将源脚本全部拷贝其中   2) 执行: #sh ./addFTPAcc.sh  

Renxi 2217

Shell脚本操作数据库实战

Shell脚本操作数据库实战导入测试数据载入数据赋予用户数据库权限Shell脚本与MySQL数据库交互mysql命令参数详解:实例利用Shell脚本将文本数据导入到MySQL中二级目录三级目录备份MySQL数据,并通过FTP将其传输到远端主机二级目录三级目录 导入测试数据 测试数据 school.sql --建表 --学生表 CREATE TABLE `student`( `s_id` VARCHAR(20), `s_name` VARCHAR(20) NOT NULL DEFAULT ''

baidu_29244931的博客 1956

FTP与SFTP传输文件的Python、shell脚本

在工作中我们经常遇到在不同的电脑之间传输文件,有时是同一网络下,有时是不同的网络之间传输文件,甚至是向客户传输文件。本文主要介绍常用的两种传输方式:FTP和SFTP,以及Python和shell脚本实现。或许你会说,传文件嘛,U盘拷一下喽,QQ、微信、邮箱等都可以呀!是的,方法有很多,但是如果每天都要你定时传一份文件给对方呢?你天天定时去插U盘拔U盘吗?对于同一网络之间的电脑,我们可以在一台机器上设置一个共享目录,然后其他的电脑挂载这一个共享目录,这样就不用互传了。

Vic的博客 5656

shell脚本连接ftp推送文件夹_Shell脚本实现FTP上传下载文件

Linux下使用Shell脚本实现FTP自动上传和下载文件介绍一个 FTP客户端-IIS7服务器管理工具作为FTP客户端,它支持批量管理ftp站点。定时上传和定时下载,定时备份,且操作简洁。同时iis7服务器管理工具还是vnc客户端。并且支持批量管理管理windows及linux服务器、vps。让服务器真正实现了一站式管理,真的是非常方便。官网地址:http://fwqglgj.iis7....

weixin_42323034的博客 1085

shell脚本中的实时ftp传输实例

背景:对数据对接的同事来说,经常会遇到,要实时的去对方服务器下取文件的情况,本文介绍一个,ftp实施取文件的脚本实例。*/1 * * * * test.sh &amp;  //crontab定时,脚本每分钟执行一次脚本内容如下:#!/bin/bashcd /dir      //本机路径#对与一整套的ftp操作常常要放到&lt;&lt;! 内容!这种格式下,把内容作为一个子输入,执行完成后再返回主...

wen‘s blog 4560

Linux下使用Shell脚本实现FTP自动上传和下载文件

登录FTP实现下载文件功能 FTP服务器:192.168.0.199 FTP路径:/ftphome/data 本地路径:/local/data 将文件从FTP下载到本地的脚本如下: 批量下载脚本代码 1 #从FTP上批量下载文件到本地 2 #!/bin/sh 3 ftp -v -n 192.168.0.199<<EOF 4 user ftpuser ftppwd 5 binary 6 cd /ftphome/downloadData 7 lcd /local/getDownload

qq_34718338的博客 6866

ftp脚本

<br />面给出两个范例,供大家参考 <br />来自:http://www.chinaunix.net,/<br />十分感谢作者:deathcult代码:1, #!/bin/sh F="xxxx.ftp" echo "open 192.168.7.51 21" > $F echo "user username passwd" >> $F echo "bin" >> $F echo "cd /home/xxx/"

x1y31的专栏 2023
上一篇: sqoop采集mysql to HDFS样例shell脚本
下一篇: hadoop集群间数据拷贝
AA赵师傅
博客等级 码龄9年 89粉丝 124原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值