sftp文件上传(从本地上传到远程)

#!/bin/bash
#远程上传文件测试
if [ $# -ne 2 ]
then
echo "miss arguments"
echo "need 2 arguments:BAT_DATE,SEQ_NO"
exit -1
fi source $HOME/.bash_profile
#parameters
BAT_DATE=$1
SEQ_NO=$2 #定义变量
ftp_ip=144.131.254.138
ftp_user=oracle
ftp_password=jkl_2016
ftp_dir=/data/lw
GZ_DIR=/home/dbbatch03/lw
send_file_name="impDHJT.sh" #执行文件上传命令
/usr/bin/expect <<-EOF
set timeout 10
spawn sftp $ftp_user@$ftp_ip
expect {
"*yes/no*" { send "yes\r"; exp_continue }
"*assword:" { send "$ftp_password\r" }
}
expect "sftp>"
send "lcd ${GZ_DIR}\r"
expect "sftp>"
send "cd ${ftp_dir}\r"
expect "sftp>"
set timeout -1
send "put $send_file_name $send_file_name\r"
expect "sftp>"
send "quit\r"
expect eof
EOF
SetCmdRslt $SEQ_NO 2
复制代码

说明:

1.expect的用法

-[链接网址]: blog.csdn.net/catoop/arti… "请点击这里"

2.expect命令详解

[链接网址]:imysql.cn/2008_11_21_…

3.put命令

put:上传文件。
用法:put 要上传的文件名 上传后的文件名

sftp从远程下载文件到本地(最基础的测试)

#!/bin/bash
#远程下载文件测试:需要自己手动输入密码
if [ $# -ne 2 ]
then
echo "miss arguments"
echo "need 2 arguments:BAT_DATE,SEQ_NO"
exit -1
fi source $HOME/.bash_profile
#parameters
BAT_DATE=$1
SEQ_NO=$2
#定义变量
ftpIp=$144.131.254.138
ftpUser=oracle
ftpPwd=jkl_2016
ftpDir=/opt/oracle/dcfile/idcheck/20180316/t_black_certid_ciis_${BAT_DATE}.txt
localDir=/home/dbbatch03/dcfile/idcheck/${BAT_DATE}
#执行命令
sftp $ftpUser@$ftpIp <<EOF
get $ftpDir $localDir
quit
EOF SetCmdRslt $SEQ_NO 2
复制代码

说明

1.直接使用sftp命令,手动输入密码

2.命令介绍

[参考网址]:blog.csdn.net/u012204058/…

sftp远程下载文件(推荐使用)

#!/bin/bash
#从138库上下载文件到10库
if [ $# -ne 2 ]
then
echo "miss arguments"
echo "need 2 arguments:BAT_DATE,SEQ_NO"
exit -1
fi source $HOME/.bash_profile
#parameters
BAT_DATE=$1
SEQ_NO=$2
#定义变量
FTP_IP=144.131.254.138
FTP_USER=oracle
FTP_USER_PWD=jkl_2016
FTP_PWD=/opt/oracle/dcfile/idcheck/$BAT_DATE
TB_FILE_NAME1=t_black_certid_ciis_${BAT_DATE}.txt
TB_FILE_NAME2=t_black_mchnt_ciis_${BAT_DATE}.txt
BASE_DIR=$HOME/dcfile/idcheck #执行命令
/usr/bin/expect <<-EOF
set timeout 10
spawn sftp $FTP_USER@$FTP_IP
expect {
"*yes/no*" { send "yes\r"; exp_continue }
"*assword:" { send "$FTP_USER_PWD\r" }
}
expect "sftp>"
send "lcd $BASE_DIR/$BAT_DATE\r"
expect "sftp>"
send "cd $FTP_PWD\r"
expect "sftp>"
set timeout -1
send "get *.*\r"
expect "sftp>"
send "bye\r"
expect eof
EOF SetCmdRslt $SEQ_NO 2
复制代码

提醒:不要忘记expect "sftp>"

[参考网址:]blog.csdn.net/zhangjingsh…

ftp上传文件

#!/usr/bin/ksh
#修改成ftp形式上传文件
#created by zhaojj on 14/12/2017
if [ $# -ne 6 ]
then
echo "使用ftp发送文件"
echo "ftp_user:用户名"
echo "ftp_ip:ip"
echo "ftp_password:密码"
echo "ldirName:本地目录"
echo "ftpdirName:远程目录"
echo "send_file_name:要发送的文件名"
exit
fi ftp_user=$1
ftp_ip=$2
ftp_password=$3
ldirName=$4
ftpdirName=$5
send_file_name=$6 #!/bin/bash
set timeout 10
ftp -n <<- EOF
open $ftp_ip
user $ftp_user $ftp_password
binary
cd $ftpdirName
lcd $ldirName
set timeout -1
bin
put $send_file_name 20171219_$send_file_name
close
bye
EOF if [ $? -ne 0 ]
then
SetCmdRslt $SEQ_NO 3
exit -1
fi SetCmdRslt $SEQ_NO 2
复制代码

转载于:https://juejin.im/post/5abb3b9d6fb9a028da7c9383

运用shell脚本 执行sftp,ftp命令的更多相关文章

  1. kettle文件自动化部署(shell脚本执行):命令行参数传入

    shell脚本中调用kitchen 和 pan去执行,job和transformation文件.分 windows和 dos系统两种. 举个简单的小例子 shell脚本: export JAVA_HO ...

  2. linux 下shell脚本执行多个命令的方法

    1.每个命令之间用;隔开说明:各命令的执行给果,不会影响其它命令的执行.换句话说,各个命令都会执行,但不保证每个命令都执行成功. 2.每个命令之间用&&隔开说明:若前面的命令执行成功, ...

  3. Linux中使用crontab命令定时执行shell脚本或其他Linux命令

    使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令.例如系统管理员安排一个备份任务使其每天都运行 如何往 cron 中添加一个作业? # crontab –e0 5 * ...

  4. Linux执行shell脚本方式及区别&命令后台运行

    Linux执行shell脚本方式及区别&命令后台运行 http://blog.csdn.net/heqiyu34/article/details/19089951/

  5. windows下建立文件的换行符^M导致linux下的shell脚本执行错误的解决方式

    常常在windows下编辑的文件远程传送到linux下的时候每行末尾都会出现^M.这将导致shell脚本执行错误,主要是由于dos下的编辑器和linux下的编辑器对文件末行的回车符处理不一致导致. 主 ...

  6. 远程shell脚本执行工具类

    /** * 远程shell脚本执行工具类 */public class RemoteShellExecutorUtils { private static final Logger logger = ...

  7. shell脚本执行错误 $'\r':command not found

    shell脚本执行错误 $'\r':command not found Linux下有命令dos2unix 可以用一下命令测试 vi -b filename 我们只要输入dos2unix *.sh就可 ...

  8. 用java代码调用shell脚本执行sqoop将hive表中数据导出到mysql

    1:创建shell脚本 touch sqoop_options.sh chmod 777 sqoop_options.sh 编辑文件  特地将执行map的个数设置为变量  测试 可以java代码传参数 ...

  9. 2.8 补充:shell脚本执行方法

    bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限.   方法一:切换到shell脚本 ...

随机推荐

  1. uni_app商城项目(完成)

    总结: 1.uni-app的跨段适配性,真的特别强,完成相关代码的书写,HbuilderX编辑器提供的打包十分方便. 2.开发小程序,H5等移动端开发, 比开发电脑端简单不少,但有时候坑也挺多的. 3 ...

  2. MAC 系统java开发环境搭建教程

    1.在安装JDK之前,先查看下自己电脑是否已经安装了JDK. 打开终端,输入java -version并回车.     从上图中可以看出我们已安装了,JDK 8.如果这个版本是你需要的版本,可直接看4 ...

  3. 【DataBase】 在Windows系统环境 下载和安装 解压版MySQL数据库

    MySQL官网解压版下载地址:https://dev.mysql.com/downloads/mysql/ 为什么不推荐使用安装版?无脑下一步,很多配置的东西学习不到了 点选第一个就好了,下面的是调试 ...

  4. win10安装docker,VSCode管理docker

    背景 docker:随着技术的不断迭代,开发环境的配置与部署越来越重要.Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linu ...

  5. Plant 矩阵快速幂,,,,有点忘了

    题目链接:https://codeforces.com/contest/185/problem/A 题目大意就是求n次以后  方向朝上的三角形的个数 以前写过这个题,但是忘了怎么做的了,,,又退了一遍 ...

  6. 配置CORS代理请求

    参考资料: Vue-CLI 3.x 跨域问题处理 使用代理设置:见官方文档 配置代理 新建配置文件 在 package.json 文件的同级目录下创建 vue.config.js 文件,文件的格式应该 ...

  7. 非oracle用户sysdba登陆出TNS-12547错误

    这个问题mark下,测试机器oracle从12c升级到19c后,非oracle用户 sysdba登陆不上.sqlnet.log里错误是: sqplus uasa/uasa error       Fa ...

  8. BUUOJ Misc刷题大作战

    你竟然赶我走 随便一个txt文件都可以拿 LSB 当然还有别的,根据里面左右左右变化,在0管道有变化,然后把下面的三个0打钩,导出png,一个二维码,扫出来 乌镇峰会种图 只要会用winhex打开文件 ...

  9. 形象地展示信号与系统中的一些细节和原理——卷积、复数、傅里叶变换、拉普拉斯变换、零极图唯一确定因果LTI系统

    看懂本文需要读者具备一定的微积分基础.至少开始学信号与系统了本文主要讲解欧拉公式.傅里叶变换的频率轴的负半轴的意义.傅里叶变换的缺陷.为什么因果LTI系统可以被零极图几乎唯一确定等等容易被初学者忽略但 ...

  10. C# XML相关操作

    XML是一种意见单文本格式存储数据的方式,这意味着它可以被任何计算机读取.XML中完整的数据集就是XML文档. 在名称空间System.Xml下面大部分类型都是用来支持DOM处理模型的.其中很多类型配 ...