文章目录
- 编写集群命令执行脚本
- xcall集群命令执行
- 1. 脚本需求
- 2. 需求分析
- 3. 脚本实现
- 3.1 创建脚本存放目录
- 3.2 编写xcall脚本
- 3.3 修改脚本执行权限
- 3.4 测试脚本
- 编写集群分发脚本
- xsync集群分发脚本
- 1. 脚本需求
- 2. 需求分析
- 3. 脚本实现
- 3.1 创建脚本存放目录
- 3.2 编写xsync脚本
- 3.3 修改脚本执行权限
- 3.4 测试脚本
编写集群命令执行脚本
xcall集群命令执行
1. 脚本需求
- 需求: 简化对多个远程主机执行相同命令的过程。允许用户通过一个单一的命令行调用,在一组预定义的主机上执行任意命令。方便集群管理和自动化任务,减少重复工作并提高效率。
2. 需求分析
- 使用
xcall
命令进行命令执行, 例如xcall ls -al /
- 期望脚本
xcall
能够在所有预定义的主机上查看根目录/
的内容。
3. 脚本实现
- 脚本存放在
/home/bigdata/bin
目录下,在~/.bashrc
中添加以下内容,以便bigdata
用户可以在系统的任何位置直接执行。export PATH=$PATH:/home/bigdata/bin
- 使环境变量生效
source ~/.bashrc
。
3.1 创建脚本存放目录
-
在
/home/bigdata
目录下创建bin
文件夹:mkdir bin
-
脚本存放在
/home/bigdata/bin
目录下,以便bigdata
用户可以在系统的任何位置直接执行。
3.2 编写xcall脚本
-
在
/home/bigdata/bin
目录下创建xall
文件:cd /home/bigdata/bin vim xcall
-
编写脚本内容:
#!/bin/bash # 定义主机名数组 hosts=("hadoop101" "hadoop102" "hadoop103") # 检查是否有外部参数传递给脚本 if [ $# -eq 0 ]; then echo "Usage: $0 <command>" exit 1 fi # 遍历主机数组,对每个主机执行 SSH 命令 for host in "${hosts[@]}"; do echo "-------- $host --------" ssh "$host" "$*" done
3.3 修改脚本执行权限
- 使
xcall
脚本具有执行权限:chmod +x xcall
3.4 测试脚本
- 测试
xcall
脚本是否正常工作:xcall ls -al /
编写集群分发脚本
xsync集群分发脚本
1. 脚本需求
- 需求:实现循环复制文件到所有节点的相同目录下。
2. 需求分析
- 使用
rsync
命令进行原始拷贝,例如:rsync -av /opt/module bigdata@hadoop102:/opt/
- 期望脚本
xsync
能够同步指定的文件名称。
3. 脚本实现
- 脚本存放在
/home/bigdata/bin
目录下,以便bigdata
用户可以在系统的任何位置直接执行。
3.1 创建脚本存放目录
- 在
/home/bigdata
目录下创建bin
文件夹:mkdir bin
3.2 编写xsync脚本
- 在
/home/bigdata/bin
目录下创建xsync
文件:cd /home/bigdata/bin vim xsync
- 编写脚本内容:
#!/bin/bash hosts=("hadoop101" "hadoop102" "hadoop103") # 1. 判断参数个数 if [ $# -lt 1 ] then echo "Not Enough Arguments!" exit 1 fi # 2. 遍历集群所有机器 for host in "${hosts[@]}"; do echo "==================== $host ===================" # 3. 遍历所有目录,挨个发送 for file in "$@"; do # 4. 判断文件是否存在 if [ -e "$file" ] then # 5. 获取父目录 pdir=$(cd -P "$(dirname "$file")"; pwd) # 6. 获取当前文件的名称 fname=$(basename "$file") ssh $host "mkdir -p \"$pdir\"" rsync -av "$pdir/$fname" "$host:$pdir" else echo "$file does not exist!" fi done done
3.3 修改脚本执行权限
- 使
xsync
脚本具有执行权限:chmod +x xsync
3.4 测试脚本
- 测试
xsync
脚本是否正常工作:xsync /path/to/file_or_directory