shell脚本实现ftp上传下载文件功能

前段时间工作中需要将经过我司平台某些信息核验数据提取后上传到客户的FTP服务器上,以便于他们进行相关的信息比对核验。由于包含这些信息的主机只有4台,采取的策略是将生成的4个文件汇集到一个主机上,然后在这台主机上将文件上传的目标ftp服务器。

1,建立主机A到其他三台主机之间的信任关系,以便于远程拷贝文件

#生成主机A的本地认证秘钥,可以选择生成rsa或者dsa类型的秘钥,这里选取rsa
[root@A ~]#ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa >/dev/null 2>&1
#将本机的秘钥拷贝的其他三台主机的authorized_keys文件中,由于只有三台主机,一个一个执行就行,如果主机数量多,可以使用expect脚本批量执行
[root@A ~]#ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 22 root@192.168.1.B"
[root@A ~]#ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 22 root@192.168.1.C"
[root@A ~]#ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 22 root@192.168.1.D"
#出现让输入B、C、D的root密码时,输入密码后回车,出现如下提示时表示建立本机到目标主机的信任关系成功
Now try logging into the machine, with "ssh '-p 22 root@192.168.1.B'", and check in:
 .ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.

2,建立上传文件到目标FTP服务器的脚本

  客户的要求是每天凌晨上传前一天的数据,我们生成的数据文件都是以当天日期_主机名_Result.csv类型的。

#以下展示脚本的内容
[root@A getfile] cat upload_csv.sh
#!/bin/bash
#此脚本用于每天定时将生成的数据文件上传到客户FTP服务器
#指定上传文件所在的主目录
SRCDIR=/tmp/test_jr/getfile/files/
#指定所需上传对端FTP服务器的目录
DESDIR=/JRAQ_FILE/
#指定对端FTP服务器的用户名和密码
USER=finftp
PASSWD="ABC@123"
#指定目标FTP服务器的IP
IP=3.3.3.3
#指定目标FTP服务器端口,一般都是默认
PORT=21
#指定所要上传文件的日期
targetDay=`date -d "-1 days" +"%Y%m%d"`
#获取所要上传的文件
cd $SRCDIR
for host in 192.168.1.B 192.168.1.C 192.168.1.D
do
  scp root@$host:$SRCDIR/$targetDay_*_Result.csv ./
done
#判定文件是否获取正确
[ $? -eq 0 ] || echo "Copy romote files failed, pls check." >>$SRCDIR/upload_file.log
#上传文件到FTP服务器
ftp -ivn <<EOF
  open $IP $PORT
  user $USER $PASSWD
  binary
  cd $DESDIR
  lcd $SRCDIR
  put ${targetDay}_*_Result.csv
  quit
EOF
#判定文件是否上传成功
[ $? -eq 0 ] && echo "Upload $targetDay's files to romote FTP server successful." >>$SRCDIR/upload_file.log || echo "Upload files failed, pls check." >>$SRCDIR/upload_file.log

3,有可能用到的转码

  由于csv文件是可以用Excel打开的,但是Excel打开utf-8编码的文件时,所有中文名称会显示乱码,此时就需要用到转码,比如将utf-8格式转换成gbk编码的,Excel就可以完美打开了。

[root@A ~]iconv -futf8 -tgbk -c -o file2.csv file1.csv
#file1是待转码的文件
#file2是转码后文件名
#-f --from-code 即从那种格式转化
#-t --to-code 转化为那种格式
#-o --output 输出的文件名
#-c 忽略输出的非法字符 加这个参数是防止文件中有某些非法字符串,如果不加此参数iconv遇到非法字符串后会自动终止转码,即使后面还有正常的未转码的字符。

总结

以上所述是小编给大家介绍的shell脚本实现ftp上传下载文件功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

时间: 2019-08-08

linux下自动备份MySQL数据并上传到FTP上的shell脚本

复制代码 代码如下: #!/bin/bash #Mysql autobackup shell # # #----------------set the mysql login parameters dbuser=root dbpasswd= dbserver=localhost dbname=fwserver2008 dbopt=--opt backupdir=/dbbackup/ #-----------------set the FTP paramters , 0 no send to a

Shell脚本实现上传zip压缩文件到FTP服务器

复制代码 代码如下: # /bin/bash # creator:lihuibin # date : 2014-03-10 16:45 # desc : upload file to ftp hosts="192.168.56.100" port=21 user=test pass=testpwd work_path="/var/www/cms" packname="publish" #hosts=$1 #port=$2 #user=$3 #pa

CentOS中使用Shell脚本实现每天自动备份网站文件和数据库并上传到FTP中

一.安装Email发送程序 复制代码 代码如下: yum install sendmail mutt 二.安装FTP客户端程序 本脚本需要用到FTP客户端程序将文件上传到FTP空间上面,因此必须安装FTP客户端,否则将出现ftp命令无法找到的错误. 安装步骤请参考:<CentOS提示ftp:command not found> 三.在/root目录下新建脚本文件:AutoBackupToFtp.sh,内容如下: 复制代码 代码如下: #!/bin/bash #你要修改的地方从这里开始 MYSQ

Linux下使用Shell脚本实现ftp的自动上传下载的代码小结

1. ftp自动登录批量下载文件. 复制代码 代码如下: #####从ftp服务器上的/home/data 到 本地的/home/databackup#####!/bin/bashftp -n<<!open 192.168.1.171user guest 123456binarycd /home/datalcd /home/databackuppromptmget *closebye! 2. ftp自动登录上传文件. 复制代码 代码如下: ####本地的/home/databackup to

PowerShell 自动备份oracle并上传到ftp

一.windows平台 1.rman自动备份方法 # Author: Edward.Zhou -- <edgeman_03@163.com> # Purpose: Windows平台下采用PowerShell使用rman自动备份oracle并上传备份到ftp,并根据日期自动保留所需备份 # Created: 2015/8/12 $env:ORACLE_SID="orcl" $env:NLS_LANG="AMERICAN_AMERICA.AL32UTF8"

自动备份Oracle数据库

正在看的ORACLE教程是:自动备份Oracle数据库. 相信为数不少的系统管理员每天都在做着同一样的工作--对数据进行备份.一旦哪一天疏忽了,而这一天系统又恰恰发生了故障,需要进行数据恢复,那么此时就无能为力了.假如每天设定一个固定的时间,系统自动进行备份,那该多好啊!下面笔者结合实践经验,谈一谈UNIX环境下Oracle数据库的自动备份,以起到抛砖引玉的作用. 我们计划让数据库在晚上23点做export导出备份,在凌晨2点将备份文件拷贝到磁带上,在凌晨4点将备份文件拷贝到另一台UNIX机器上

Linux下通过脚本自动备份Oracle数据库并删除指定天数前的备份

说明: Oracle数据库服务器 操作系统:CentOS IP:192.168.0.198 端口:1521 SID:orcl Oracle数据库版本:Oracle11gR2 具体操作: 1.root用户登录服务器 mkdir -p /backup/oracledata #新建Oracle数据库备份目录 chown -R oracle:oinstall /backup/oracledata -R #设置目录权限为oinstall用户组的oracle用户(用户oracle与用户组oinstall是在

Linux 自动备份oracle数据库详解

Linux 自动备份oracle数据: 曾经有个同事,来回操作开发和生产的数据库,结果误删了生产的数据库,那种心情我想不是一般人能理解的,虽然说oracle可以有方法还原,但并不是彻底的. 所以,在工作中,不管是开发还是维护,备份数据库是非常有必要. 简单实用的晚间自动备份数据库小案例 步骤一.创建备份脚本,暂且命名为orabak.sh #路径名,指定备份的路径 FILEPATH = /oracle/orabak #根据指定日期格式,定义备份数据库文件名 FILENAME = `date + %

远程图片自动按文件夹上传到服务器-默飞出品

远程图片自动按文件夹上传到服务器-默飞出品 a { text-decoration: none; color: blue } a:hover { text-decoration: underline } body { scrollbar-base-color: #F8F8F8; scrollbar-arrow-color: #698CC3; font-size: 12pt; background-color: #ffffff } 在输入框中输入远程图片地址,如图片不存在,程序自动放弃本次操作.

定时备份 Mysql并上传到七牛的方法

多数应用场景下,我们需要对重要数据进行备份.并放置到一个安全的地方,以备不时之需. 常见的 MySQL 数据备份方式有,直接打包复制对应的数据库或表文件(物理备份).mysqldump 全量逻辑备份.xtrabackup 增量逻辑备份等. 常见的数据存储方式有,本机存储.FTP 上传到远程服务器.云存储(如阿里云OSS.七牛云存储等).甚至本地也行. 我们可能不想每次都手动去备份,也不想每次都那么耗时间的去下载,也不想就放在服务器上丢了,因为我们需要异地备份.那我们可以尝试,写个脚本定时备份数据

用VBScript收集系统信息并上传到ftp空间

之前无聊整理出来了一份这个东西,因为在单位给新入职的员工配电脑时,需要登记一遍设备,可每次总要查感觉挺麻烦,结果下面的这份VBS脚本就诞生了,只可惜这个脚本做好了却没派上用场哎... 这个脚本的功能是运行后自动将查询到的计算机相关信息记录到一个文档中,然后在经过FTP将生成的文件上传至服务器保存,最后在清除运行脚本是生成的文件并删除自身. 下面是代码: 复制代码 代码如下: '#####收集计算机信息_开始##### On Error Resume Next Set fso = CreateOb

java实现将文件上传到ftp服务器的方法

本文实例讲述了java实现将文件上传到ftp服务器的方法.分享给大家供大家参考,具体如下: 工具类: package com.fz.common.util; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; imp

Http上传与Ftp上传的区别详解

1:Http上传http上传就是通过http协议来向服务器上传文件,所以服务器端应该有一个处理客户端请求的页面.添加一个FileUploadHandler.ashx的文件来处理客户端请求.代码如下: 复制代码 代码如下: /// <summary>/// FileUploadHandler 的摘要说明/// </summary>public class FileUploadHandler : IHttpHandler{    private const string UPLOAD_