运用shell脚本 执行sftp,ftp命令
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命令的更多相关文章
- kettle文件自动化部署(shell脚本执行):命令行参数传入
shell脚本中调用kitchen 和 pan去执行,job和transformation文件.分 windows和 dos系统两种. 举个简单的小例子 shell脚本: export JAVA_HO ...
- linux 下shell脚本执行多个命令的方法
1.每个命令之间用;隔开说明:各命令的执行给果,不会影响其它命令的执行.换句话说,各个命令都会执行,但不保证每个命令都执行成功. 2.每个命令之间用&&隔开说明:若前面的命令执行成功, ...
- Linux中使用crontab命令定时执行shell脚本或其他Linux命令
使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令.例如系统管理员安排一个备份任务使其每天都运行 如何往 cron 中添加一个作业? # crontab –e0 5 * ...
- Linux执行shell脚本方式及区别&命令后台运行
Linux执行shell脚本方式及区别&命令后台运行 http://blog.csdn.net/heqiyu34/article/details/19089951/
- windows下建立文件的换行符^M导致linux下的shell脚本执行错误的解决方式
常常在windows下编辑的文件远程传送到linux下的时候每行末尾都会出现^M.这将导致shell脚本执行错误,主要是由于dos下的编辑器和linux下的编辑器对文件末行的回车符处理不一致导致. 主 ...
- 远程shell脚本执行工具类
/** * 远程shell脚本执行工具类 */public class RemoteShellExecutorUtils { private static final Logger logger = ...
- shell脚本执行错误 $'\r':command not found
shell脚本执行错误 $'\r':command not found Linux下有命令dos2unix 可以用一下命令测试 vi -b filename 我们只要输入dos2unix *.sh就可 ...
- 用java代码调用shell脚本执行sqoop将hive表中数据导出到mysql
1:创建shell脚本 touch sqoop_options.sh chmod 777 sqoop_options.sh 编辑文件 特地将执行map的个数设置为变量 测试 可以java代码传参数 ...
- 2.8 补充:shell脚本执行方法
bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本 ...
随机推荐
- 数据挖掘入门系列教程(八点五)之SVM介绍以及从零开始推导公式
目录 SVM介绍 线性分类 间隔 最大间隔分类器 拉格朗日乘子法(Lagrange multipliers) 拉格朗日乘子法推导 KKT条件(Karush-Kuhn-Tucker Conditions ...
- python--内建属性、集合、常见模块、调试
一.常用内建属性 常用专有属性 说明 触发方式 __init__ 构造初始化函数 创建实例后,赋值时使用,在__new__后 __new__ 生成实例所需属性 创建实例时 __class__ 实例所在 ...
- 机器学习4- 多元线性回归+Python实现
目录 1 多元线性回归 2 多元线性回归的Python实现 2.1 手动实现 2.1.1 导入必要模块 2.1.2 加载数据 2.1.3 计算系数 2.1.4 预测 2.2 使用 sklearn 1 ...
- Web前端必备-Nginx知识汇总
一.Nginx简介 Nginx是一个高性能.轻量级的Web和反向代理服务器, 其特点是占有内存及资源少.抗并发能力强. Nginx安装简单.配置简洁.启动快速便捷.支持热部署.支持 SSL.拥有高度模 ...
- matplotlib BboxBase类
2020-04-07 17:24:12 --Edit by yangray BboxBase 是 TransformNode 的子类, 同时它是所有 bounding box(平行四边形限位框) 的 ...
- Pytest系列(18)- 超美测试报告插件之allure-pytest的基础使用
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 官方介绍 Allure Frame ...
- spark模型error java.lang.IllegalArgumentException: Row length is 0
failure: Lost task 18.3 in stage 17.0 (TID 59784,XXXXX, executor 19): java.lang.IllegalArgumentExcep ...
- 好消息,vue3.0 进入 beta 阶段!
昨天,4 月 16 日,vue 3 正式进入 beta 阶段.同日,尤大参加了 State of Vue 的线上活动,以下是他上传到 google docs 上的 slides : State of ...
- loadrunner post请求
注意:loadrunner参数中的引号,需要自己加"\" post 请求,分为header 和body两个部分处理 header部分比较容易处理,使用函数实现,如web_add_h ...
- sqli-labs通关----1~10
最近感觉自己sql注入有点生疏了,想来复习一下,做个记录. 第一关 1.尝试报错我们在1之后加上',根据反馈信息1'后面多了一个'所以我们想办法闭合用 'or 1=1 --+.注意这里#没作用 2.接 ...