shell脚本

我们写shell脚本的时候,可能会遇到交互式的情况,如果不想在执行脚本的时候出现交互式,怎么做呢?很简单,写个expect脚本就能轻易解决,下面是我写的一个简单的shell。

1、写好expect脚本,解决交互式问题,在后面的shell中将会引用expect

#!/usr/bin/expect

spawn kinit hdfs

expect{

"PASSWORD*" {send "testpassword"}

}

这样一个最简单的expect脚本就写好了!

2、下面是shell脚本,用Hadoop下载一定时间范围内的数据

#!/bin/bash
date_start=$1
date_end=$2
date_process=${date_start}
hdfs_dir=/TEST/ZMER
local_dir=/tmp/test
log_dir=/tmp/logs

#引用expect脚本
cd /opt/fi_client
source bigdata_env
expect /opt/fi_client/hdfs_expect

#date_increament.sh 2016010100 2016040100

while [ "${date_process}" -le "${date_end}" ]
do
#call your shell scripts ${date_process}
dd_date=${date_process:0:8}
if [ ! -d $local_dir/$dd_date ]
then mkdir -p  $local_dir/$dd_date
fi
for i in $(cat $local_dir/test.txt)
do
hadoop fs -get $hdfs_dir/TEST_$dd_date.dat $local_dir/$dd_date 1>/dev/null 2>&1
if [[ $? == 0 ]]
then touch $hdfs_dir/TEST_$dd_date.verf
date=`date +"%Y%m%d %H%M%S"`
log_rec="[TIME]: "$date" [MGS]:"$hdfs_dir/TEST_$dd_date.dat
echo $log_rec "is load succed" >> $log_dir/test_$dd_date.log
fi

done

#时间循环时间格式为yyyymmddhh

date_process=`date +%Y%m%d%H -d "1 hours $dd_date ${date_process:0-2}"`
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值