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