多台服务器文件分发脚本和命令执行脚本

背景:基于hadoop的分布式部署 (具体请看文章),为了方便文件的分发与命令的执行,顾编制此脚本

服务器配置四台:(h101    192.168.44.101)(h102    192.168.44.102)(h103    192.168.44.103)(h104   192.168.44.104)

备注:h101可以ssh免密码登录进入 h102 h103  h104  .

一、命令分发

1、本机使用hadoop用户操作(建议初学者使用root(去掉所有命令中的sudo),完成后,再新建用户进行sudo配置后,再操作)

创建文件夹:shell

新建文件:xcall.sh (命令分发执行)

修改文件权限

2、xcall.sh 内的脚本编写:

#!/bin/bash
#echo hello world 

#获取输入参数
params=$@
echo ${params}

#通过hostname来运行ssh命令 提前进行hostname和ip的绑定对应
for (( i = 101 ; i <= 104  ; i = $i + 1  )) ; do
        echo ============ h$i $params  ===============
        ssh h$i $params
done

测试:(基于hadoop的分布式配置) (执行脚本加(./) 代表当前目录下)

当无需输入密码,成功,代表文件命令分发成功。

但为了可以在任何目录下执行次操作:

输入命令:$>echo $PATH

查看脚本可以自动识别的路径:

本地将脚本放置到:/usr/local/bin  目录下  

进入任何目录测试: (备注:输入xc 后按tab键可以自动补全 说明配置成功)

二、文件分发

1、创建xsync.sh  文件分发脚本

2、修改xsync.sh 

3、编写文件内容

#!/bin/bash
echo '文件分发中'

#查看当前文件是否目录
echo $#
if [[ $# -lt 1 ]] ; then echo no params ; exit ; fi

p=$1
#echo p=$p
#注意此处执行linux命令  并非英文或中文的单引号  而是 tab键上单引号
dir=`dirname $p`
#echo dir=$dir
filename=`basename $p`
#echo filename=$filename
cd $dir
fullpath=`pwd -P .`
#echo fullpath=$fullpath

#获取当前服务器当前用户

user=`whoami`
for (( i = 102 ; i <= 104 ; i = $i + 1 )) ; do
        echo =========== h$i $1  ======================
        rsync -lr $p ${user}@h$i:$fullpath
done

4、测试、

备注:代表成功。

同时为了在任意目录均可执行,进行上述描述过的操作即可

猜你喜欢

转载自blog.csdn.net/weixin_39435629/article/details/84871851
今日推荐