集群分发脚本(xsync)

1.在/usr/local/bin 目录下,创建xsync文件。

  1. # 使用前请确保已经安装rsync
  2. sudo yum -y install rsync
  3. cd /usr/local/bin
  4. sudo vi xsync

脚本内容如下:

  1. #!/bin/bash
  2. # 1.获取输入参数个数,如果没有参数,直接退出
  3. pcount=$#
  4. if((pcount==0)); then
  5. echo no args;
  6. exit;
  7. fi
  8. # 2.获取文件名称
  9. p1=$1
  10. fname=`basename $p1`
  11. echo fname=$fname
  12. # 3.获取上级目录到绝对路径
  13. pdir=`cd -P $(dirname $p1); pwd`
  14. echo pdir=$pdir
  15. # 4.获取当前用户名称
  16. user=`whoami`
  17. # 5.循环
  18. for i in bigdata-node1 bigdata-node2 bigdata-node3
  19. do
  20. echo ------------------- $i --------------
  21. if [ "$i" = "${HOSTNAME}" ];then
  22. echo "I'm the host ${HOSTNAME},do nothing."
  23. else
  24. rsync -rvl $pdir/$fname $user@$i:$pdir
  25. fi
  26. done

2.修改脚本 xsync 具有执行权限。

  1. sudo chmod 777 xsync

3.修改脚本 xsync 具有所有者和所有者所属组。

  1. sudo chown vagrant:vagrant xsync

4.脚本调用。

  1. # 示例,将~/.bashrc分发到集群其他节点
  2. xsync ~/.bashrc

5.分发脚本。(选做)

  1. # 使用root账户分发至其他节点
  2. sudo scp -r /usr/local/bin/xsync root@bigdata-node2:/usr/local/bin/
  3. sudo scp -r /usr/local/bin/xsync root@bigdata-node3:/usr/local/bin/

集群整体操作脚本(xcall)

1.在/usr/local/bin 目录下,创建 xcall 文件。

  1. cd /usr/local/bin
  2. sudo vi xcall

脚本内容如下:

  1. #!/bin/bash
  2. for i in bigdata-node1 bigdata-node2 bigdata-node3
  3. do
  4. echo --------- $i ----------
  5. ssh $i "source /etc/profile ; $*"
  6. done

2.修改脚本 xcall 具有执行权限。

  1. sudo chmod +x xcall

3.修改脚本 xcall具有所有者和所有者所属组。

  1. sudo chown vagrant:vagrant xcall

4.脚本调用。

  1. # 示例,在集群所有节点上运行“ ls /home ”
  2. xcall ls /home

5.分发脚本。(选做)

  1. # 使用root账户分发至其他节点
  2. sudo scp -r /usr/local/bin/xcall root@bigdata-node2:/usr/local/bin/
  3. sudo scp -r /usr/local/bin/xcall root@bigdata-node3:/usr/local/bin/