shell-脚本远程连接ftp服务器?直接用

1.描述

        从远程ftp服务器上获取压缩包,下载到本地linux并解压文件

        脚本输入一个日期,获取ftp上的 日期.tar.gz 压缩包,并解压到制定目录;或者脚本不使用传入参数,直接在脚本中使用 date +%F 获取当天的日期使用,T+1的话日期自己变化;这里就输入一个参数

        如果是循环获取文件,写一个集合把文件名全放进去,然后for i in这个集合,执行shell里的download函数下载文件,只需要对应修改一下即可。

2.修改连接信息,直接使用

#!/bin/bash

# FTP连接信息
FTP_USER="ftptest1"    #ftp 用户
FTP_PASSWORD="Aa222222"  #用户密码
FTP_HOST="192.168.80.123"  #ftp 服务器地址
FTP_REMOTE_DIR="ftp"   #下载的包在那个目录下? 登进ftp会默认在ftp根目录/下(不是服务器 / )
# 定义目录信息
LOCAL_DIR="/home/exec/package" #下载压缩包的地址  本地
UNZIP_LOCAL_DIR="/home/exec/unzip" #解压压缩包的地址

#目录是否存在
if [ ! -d "$LOCAL_DIR" ]; then
  mkdir -p $LOCAL_DIR
fi 
if [ ! -d "$UNZIP_LOCAL_DIR" ]; then
  mkdir -p $UNZIP_LOCAL_DIR
fi 

#判断输入参数是否为日期YYYYMMDD 指定格式(略) 
#或者直接 $(date +%F) 获取当天或者T+1 上一天的日期
IN_DATE=$1
FTP_FILE=${IN_DATE}.tar.gz

#FTP下载压缩包到指定目录
function download_targz() {
    echo "Downloading $FTP_FILE ..."
    if ! ftp -n $FTP_HOST <<EOF
        quote USER $FTP_USER
        quote PASS $FTP_PASSWORD
        binary
		cd $FTP_REMOTE_DIR
		lcd $LOCAL_DIR
        get $FTP_FILE
        quit
EOF
    then
        echo "Failed to download $FTP_FILE"
		exit 1
    fi
}

# 解压下载的tar到指定目录(已测试)
function extract_file() {
    echo "Extracting $FTP_FILE ..."
    if ! tar -xzf $LOCAL_DIR/$FTP_FILE -C $UNZIP_LOCAL_DIR; then
        echo "Failed to extract $FTP_FILE"
		exit 1
    fi
}
#下载
down_result=$(download_targz)
#增加一个判断,如果要下载的包不存在,那么报错
if [[ $(echo $down_result |grep -c -E -i 'failed|error') -ne 0 ]];then
	echo "download $FTP_FILE error "
	exit 1
else
	echo "download $FTP_FILE ok "
fi
#解压
extract_result=$(extract_file)
#增加一个判断,如果加压过程出现error等错误,也算报错
if [[ $(echo $extract_result |grep -c -E -i 'failed|error') -ne 0 ]];then
	echo "extract $FTP_FILE error "
	exit 1
else
	echo "extract $FTP_FILE ok "
fi

3.调用显示 

4.通过crontab配置定时任务 

        格式

*    *    *    *    *   command
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 6) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

        输入参数的适合手动执行,改成直接获取当天的日期

        通过crontab -e配置 ,因为是测试就改成5分钟执行一次脚本,自行配置,如果全部删除可以用crontab -r,查看信息使用crontab -e

        如果手动执行脚本正常显示,但是放到定时任务里就不执行 ,那么可能是环境变量没有,在脚本最前面增加一行source  /etc/profile  或者使用用户的环境变量 source ~/.bash_profile

        注意命令是全路径

        查看显示

 

        仅供参考修改,主要还是注意自己的文件是什么样的,再修改 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值