linux集群常用的执行命令脚本(xcall)和同步文件脚本(xsync)

本篇文章介绍的是linux集群常用的执行命令脚本(xcall)和同步文件脚本(xsync),如有错误或不当之处,还望各位大神批评指正。众所周知,在配置Linux系统时常常会遇到同一个配置文件要在多个机器上配置的烦恼,如果一台一台机器配置的话十分的繁琐且没有什么意义,那么这时就用到了如下两个脚本。

一、同步文件脚本(xsync)

  • 作用是将文件或者文件夹同步到集群上的其他从机
  • 注意需要主机和从机安装命令rsync(yum install rsync -y)

脚本源码

#!/bin/bash

# 获取输出参数,如果没有参数则直接返回
pcount=$#
if [ $pcount -eq 0 ]
then
	echo "no parameter find !";
	exit;
fi

# 获取传输文件名
p1=$1
filename=`basename $p1`
echo "load file $p1 success !"

# 获取文件的绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo "file path is $pdir"

# 获取当前用户(如果想使用root用户权限拷贝文件,在命令后加入-root参数即可)
user=$2
case "$user" in
"-root")
	user="root";;
"")
	user=`whoami`;;
*)
	echo "illegal parameter $user"
	
esac

echo $user
# 拷贝文件到从机(这里注意主机的host需要根据你的实际情况配置,要与你具体的主机名对应)
for (( host=2;host<=5;host++ ))
do 
	echo "================current host is hadoop00$host================="
	rsync -rvl $pdir/$filename $user@hadoop00$host:$pdir
done

echo "complate !"

实际应用

# 使用当前用户拷贝jdk目录下所有文件到从机
sync jdk/
# 使用root用户权限拷贝文件到从机
sync jdk/ -root

在这里插入图片描述

二、执行命令脚本(xcall)

  • 作用是在所有从机上执行相同的命令

脚本源码

#!/bin/bash

# 获取控制台指令

cmd=$*

# 判断指令是否为空
if (( #$cmd -eq # ))
then 
	echo "command can not be null !"
	exit
fi

# 获取当前登录用户
user=`whoami`

# 在从机执行指令,这里需要根据你具体的集群情况配置,host与具体主机名一致
for (( host=2;host<=5;host++ ))
do
        echo "================current host is hadoop00$host================="
	echo "--> excute command \"$cmd\""
        ssh $user@hadoop00$host $cmd
done

echo "excute successfully !"

实例应用

# 使用当前用户在所有从机上执行‘whoami’命令
xcall whoami

在这里插入图片描述

  • 这两个脚本功能比较单一,大家可以往里边添加新的功能,定制自己喜欢的脚本。
  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值