shell脚本推送每日文件到ftp服务器日期目录下

文章目录

        • 需求
        • ftp方式
        • lftp方式
        • 其他ftp操作命令

需求

需求:本地每日日期文件夹下的后缀名为.ok文件推送到ftp服务器,在ftp上创建每日文件夹,并把当日ok文件推送到创建的文件夹下

ftp方式

#!/bin/sh

v_date=$1
echo $v_date
#如果传入时间则时间是传入时间,如果没有传入时间参数 默认是昨天
if [ -z "$v_date" ]; then
        v_date=`date -d yesterday +'%Y%m%d'`
        echo "时间参数为空"
        echo $v_date
else
        echo "已经手动传入时间参数"
        v_date=$v_date
fi
echo $v_date


funcPutFile(){
mkdirdate=$1
echo $mkdirdate
# 需要连接主机的ip:用户名:密码
IP=xxx.xxx.xxx.xxx
PORT=21
USER=ftp
PASSWD=ftp
LOCAL_PATH=/opt/test/
REMOTE_PATH=/var/ftp/test/
lock_file_name=${mkdirdate}
echo ${lock_file_name}

ftp -ivn <<EOF
open $IP $PORT
user $USER $PASSWD
cd ${REMOTE_PATH}
lcd ${LOCAL_PATH}
mkdir ${lock_file_name}
quit
EOF
}

funcPutOK(){
mkdirdate=$1
echo $mkdirdate

# 需要连接主机的ip:用户名:密码
IP=xxx.xxx.xxx.xxx
PORT=21
USER=ftp
PASSWD=ftp
LOCAL_PATH=/opt/test/${v_date}/date/
REMOTE_PATH=/var/ftp/test/${v_date}/

cd ${LOCAL_PATH};

FILES=`find -name 'dir.*' -o -name '*.ok'`

for FILE in ${FILES}
do
        echo ${FILE}
ftp -ivn <<EOF
open $IP $PORT
user $USER $PASSWD
cd ${REMOTE_PATH}
lcd ${LOCAL_PATH}
put ${FILE}
quit
EOF
done
}

#创建当前文件夹
funcPutFile $v_date
#拷贝ok文件
funcPutOK $v_date
// 如果没有安装ftp需要安装ftp
yum -y install ftp

lftp方式

// An highlighted block
#!/bin/sh

v_date=$1
echo $v_date
#如果传入时间则时间是传入时间,如果没有传入时间参数 默认是昨天
if [ -z "$v_date" ]; then
        v_date=`date -d yesterday +'%Y%m%d'`
        echo "时间参数为空"
        echo $v_date
else
        echo "已经手动传入时间参数"
        v_date=$v_date
fi
echo $v_date


funcPutFile(){
mkdirdate=$1
echo $mkdirdate
# 需要连接主机的ip:用户名:密码
IP=192.168.181.100
PORT=22
USER=root
PASSWD=123456
LOCAL_PATH=/opt/test/
REMOTE_PATH=/opt/test/
lock_file_name=${mkdirdate}
echo ${lock_file_name}

lftp -u ${USER},${PASSWD} sftp://${IP}:${PORT} <<EOF
cd ${REMOTE_PATH}
lcd ${LOCAL_PATH}
mkdir ${lock_file_name} 
by
EOF
}

funcPutOK(){
mkdirdate=$1
echo $mkdirdate

# 需要连接主机的ip:用户名:密码
IP=192.168.181.100
PORT=22
USER=root
PASSWD=123456
LOCAL_PATH=/opt/test/${v_date}/date/
REMOTE_PATH=/opt/test/${v_date}/

cd ${LOCAL_PATH};

FILES=`find ${LOCAL_PATH} -name 'dir.*' -o -name '*.ok'`

for FILE in ${FILES}
do
        echo ${FILE}
lftp -u ${USER},${PASSWD} sftp://${IP}:${PORT} <<EOF
cd ${REMOTE_PATH}
lcd ${LOCAL_PATH}
put ${FILE}
by
EOF
done
}

#创建当前文件夹
funcPutFile $v_date
#拷贝ok文件
funcPutOK $v_date

其他ftp操作命令

ftp常用操作命令

你可能感兴趣的:(linux学习)