服务器免密数据传输及hdfs文件操作记录

需求描述:

      最近需要在两台没有打通的服务器之间进行数据传输,因为设置的任务每天自动调度,因此不能直接使用scp命令直接拿数据,不然每次都要手动输入密码。后发现可以使用spawn命令可以解决这一问题,同时将另外一个机器的数据上传到hdfs集群上。在此记录一下~

通过shell脚本实现上述需求,实现代码如下:

#!/bin/sh

data_target="/home/admin/hotel/jk_data"

set -e
WORKDIR=`dirname $0`
DIR=`cd $WORKDIR&&pwd`
cd $DIR

source ../config.sh
echo "[`date`] getting data from table sftp_device for $YESTERDAY_DATE start"

#免登陆
/usr/bin/expect <<-EOF
set timeout 30
spawn sftp data-dashuju@10.129.11.111:/data/bigdata/$YESTERDAY_DATE/tmp_move_phone_online.txt $data_target/phone_onlie/
expect "*password"
send "Jxxxx"   # 机器真实密码
expect eof
EOF

#文件重命名
mv $data_target/tmp_move_phone_online.txt $data_target/tmp_move_phone_online_$YESTERDAY_DATE.txt

set +e
hdfs dfs -mkdir $hdfs_location/move_phone_online
set +e
hdfs dfs -mkdir $hdfs_location/move_phone_onlie/pt=$YESTERDAY_DATE

set -e
hdfs dfs -copyFromLocal -f $data_target/tmp_move_phone_online_$YESTERDAY_DATE.txt $hdfs_location/move_phone_onlie/pt=$YESTERDAY_DATE
# -f 的作用是:如果集群分区文件已存在,则进行覆盖

#分区修复
hive -e"msck repair table htl.move_phone_online"

echo "[`date`] getting data from table sftp_device for $YESTERDAY_DATE Finish"

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值