集群分发脚本(xsync)
1.在/usr/local/bin 目录下,创建xsync文件。
# 使用前请确保已经安装rsync
sudo yum -y install rsync
cd /usr/local/bin
sudo vi xsync
脚本内容如下:
#!/bin/bash
# 1.获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
# 2.获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
# 3.获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
# 4.获取当前用户名称
user=`whoami`
# 5.循环
for i in bigdata-node1 bigdata-node2 bigdata-node3
do
echo ------------------- $i --------------
if [ "$i" = "${HOSTNAME}" ];then
echo "I'm the host ${HOSTNAME},do nothing."
else
rsync -rvl $pdir/$fname $user@$i:$pdir
fi
done
2.修改脚本 xsync 具有执行权限。
sudo chmod 777 xsync
3.修改脚本 xsync 具有所有者和所有者所属组。
sudo chown vagrant:vagrant xsync
4.脚本调用。
# 示例,将~/.bashrc分发到集群其他节点
xsync ~/.bashrc
5.分发脚本。(选做)
# 使用root账户分发至其他节点
sudo scp -r /usr/local/bin/xsync root@bigdata-node2:/usr/local/bin/
sudo scp -r /usr/local/bin/xsync root@bigdata-node3:/usr/local/bin/
集群整体操作脚本(xcall)
1.在/usr/local/bin 目录下,创建 xcall 文件。
cd /usr/local/bin
sudo vi xcall
脚本内容如下:
#!/bin/bash
for i in bigdata-node1 bigdata-node2 bigdata-node3
do
echo --------- $i ----------
ssh $i "source /etc/profile ; $*"
done
2.修改脚本 xcall 具有执行权限。
sudo chmod +x xcall
3.修改脚本 xcall具有所有者和所有者所属组。
sudo chown vagrant:vagrant xcall
4.脚本调用。
# 示例,在集群所有节点上运行“ ls /home ”
xcall ls /home
5.分发脚本。(选做)
# 使用root账户分发至其他节点
sudo scp -r /usr/local/bin/xcall root@bigdata-node2:/usr/local/bin/
sudo scp -r /usr/local/bin/xcall root@bigdata-node3:/usr/local/bin/