centos7下(Linux) SFTP的自动 登陆 下载文件 shell脚本

本文介绍了如何编写一个Linux Shell脚本,实现通过SFTP自动登录远程服务器并下载指定目录下的所有.csv文件。脚本首先创建目标文件夹,然后使用Expect工具处理SFTP登录和文件下载。另外,还提供了一个判断文件夹内文件数量的脚本,当文件数量大于0时,将文件推送到HDFS,并进行Hive表的操作。
摘要由CSDN通过智能技术生成

linux下关于SFTP的自动登陆下载文件 .sh脚本编写

1.需求

编写一个shell脚本来自动把某个服务器下的文件下载到本地

2.脚本

#!/bin/bash

# 创建文件夹 来存放文件
dir="td_area_tmp"
if [ ! -d "$dir" ];then
mkdir $dir
echo "创建文件夹成功"
else
echo "文件夹已经存在"
fi
# 文件夹创建成功!!

# 切换文件目录 
cd td_area_tmp

# 开始登陆sftp 下载文件
/usr/bin/expect <<\EOF
#@@@@@@@@@@@@@@@@@@@@@@@@参数设置开始@@@@@@@@@@@@@@@
#设置远端IP
set ip 11.11.11.11
#设置用户名
set username hh
#设置密码
set password pass
#@@@@@@@@@@@@@@@@@@@@@@@设置结束@@@@@@@@@@@@@@@@@@@
spawn sftp ${username}@${ip}
expect "*?"
send "yes\r"
expect "*Password"
send "${password}\r"
expect "sftp>"
send "cd /data/disk02/hh/upload/td_area\r"
expect "sftp>"
send "get *.csv ./\r"
expect "sftp>"
send "bye\r"
EOF
# sftp 下载文件完毕

这里使用了/usr/bin/expect 智能问答,有不了解的可以百度下。

3.判断文件夹下的文件数量

这里是我记笔记 ,跟标题无关

#!/bin/bash

## ls -l ./|grep "^-"|wc -l 检查文件个数
## 判断文件个数:
fileCount=$(ls -l |grep "^-"|wc -l)
echo $fileCount
if [[  $fileCount  -gt 0 ]]
then
echo "含有"
## 含有文件  往 hdfs 推送
# 检查是否存在该目录
hdfs dfs -test -e /tenants/hh/work/hh/qk/${table_name_tmp}
if [ $? -eq 1 ];then
    ## 如果存在,这个命令将返回0;反之则返回1。
    # 创建文件夹
    hdfs dfs -mkdir /tenants/hh/work/hh/qk/${table_name_tmp}
fi
hdfs dfs -put ./*.csv /tenants/hh/work/hh/qk/${table_name_tmp}
# beeline -u jdbc:hive2://11.11.11.11:10000/HH -n hh -p pass -e "truncate table ${table_name_tmp};"
# beeline -u jdbc:hive2://11.11.11.11:10000/HH -n hh -p pass -e "load data inpath '/tenants/hh/work/hh/qk/${table_name_tmp}/*.csv' into table ${table_name_tmp};"
fi

若有错误,希望大佬指出。
对你有帮助给点个👍再走呗。

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值