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. 【电商】性能测试网站搭建:XAMPP1.8+DBShop1.3

    1.安装准备 1.1软件版本 XAMPP的版本:XAMPP 1.8.2 DBShop的版本:DBShop 1.3   1.2.安装环境 我的环境:win10 win7,win10都可以运行的,安装步骤 ...

  2. mpvue 踩坑之src数据绑定出错

    原文链接:https://blog.csdn.net/weixin_38984353/article/details/80847288 src实现数据绑定稍不留神就不成功.假定value.src是绑定 ...

  3. 微信小程序 使用include导入wxml文件注意的问题

    (1)使用inlucde的时,要注意将最后的终止符 / 添加上去,否则不能正常的导入界面内容 <include src="header.wxml"/> (2)引入文件注 ...

  4. django、celery异步发邮件

    django.celery异步发邮件 django自带的send_mail发邮件功能执行发邮件功能会因为网络的原因造成花费的时间过长,为了解决这个问题,可以用celery + redis代替 安装包: ...

  5. hicharts中treemap添加超链接

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  6. 7.2 java 类的定义和使用

    /* * 类的定义: * 类是用来描述现实世界的事物的 * * 事物: * 属性 事物的描述信息 * 行为 事物能够做什么 * * 类是如何和事物进行对应的呢? * 类: * 成员变量 * 成员方法 ...

  7. Python Requests-学习笔记(5)-响应状态码

    我们可以检测响应状态码: r = requests.get('http://httpbin.org/get') r.status_code 为方便引用,Requests还附带了一个内置的状态码查询对象 ...

  8. 并发系列64章(TPL 数据流)第七章

    前言 什么是TPL?全称:transmission control protocol 传输层对应于OSI七层参考模型的传输层,它提供两种端到端的通信服务. 然后思维方式回到为什么有这个TPL 数据流上 ...

  9. java jdk 中HashMap的源码解读

    HashMap是我们在日常写代码时最常用到的一个数据结构,它为我们提供key-value形式的数据存储.同时,它的查询,插入效率都非常高. 在之前的排序算法总结里面里,我大致学习了HashMap的实现 ...

  10. ftl中几个特殊的用法

    @ 注意${}为变量的渲染显示,即先计算后打印出来,而<>里面为定义等操作符的定义 ,而首尾2个<>中间部分一般为计算打印部分 @数据模型中如果不是以map数据来封装的,而是直 ...