一、简要说明
1、批处理脚本介绍
- 命令批处理脚本:/usr/shell/all.sh
- 文件批量分发脚本:/usr/shell/scp.sh
2、批处理命令脚本原理
- 读取/usr/shell/hosts文件中的ip列表
- 使用$*接收脚本所有参数
- for循环遍历hosts文件中的ip地址
- 通过ssh host cmd 实现目的ip命令
- eval命令判断并打印命令执行结果
- for循环遍历完hosts则脚本运行结束
3、批量分发脚本原理
- 1和2接收参数文件名和分发路径
- for循环遍历hosts文件中的ip地址
- 通过scp 1 host:
- eval命令判断并打印命令执行结果
- for循环遍历完hosts则脚本运行结束
二、批处理命令脚本
1、创建 /usr/shell/ 目录
mkdir -p /usr/shell/ && cd /usr/shell/
2、创建批处理脚本并赋权
touch /usr/shell/all.sh && chmod 777 /usr/shell/all.sh
3、批处理脚本实现代码
vim /usr/shell/all.sh
#!/bin/bash
echo "------start execyting the shell script------"
# awk 读取hosts文件的第一部分ip地址
hosts=$(cat /usr/shell/hosts | awk '{print $1}')
# 传递的指令(参数)
cmd=$*
# for循环读取文件
for host in ${hosts[*]}
do
exec="ssh $host $cmd"
echo $exec
if eval $exec; then
echo 'success'
else
echo "fail"
fi
done
echo "----end th executing of the shell script------"
三、批量分发文件脚本
1、创建批量分发脚本并赋权
touch /usr/shell/scp.sh && chmod 777 /usr/shell/scp.sh
2、定义批量处理的hosts
这里的hosts是批处理代码从需要读取的hosts,想批处理哪台服务器就写哪个host
cat /etc/hosts
vim /usr/shell/hosts
172.18.0.2 hadoop01
172.18.0.3 hadoop02
172.18.0.4 hadoop03
2、批量分发文件脚本实现
vim /usr/shell/scp.sh
#!/bin/bash
echo "------start execyting the shell script------"
# awk 读取hosts文件的第一部分ip地址
hosts=$(cat /usr/shell/hosts | awk '{print $1}')
# 传递的第一个参数,文件名称
file=$1
# 传递的第二个参数,目录路径
dir=$2
# for循环读取文件
for host in ${hosts[*]}
do
exec="scp $file $host:$dir"
echo $exec
if eval $exec; then
echo 'success'
else
echo "fail"
fi
done
echo "----end th executing of the shell script------"
四、批处理脚本命令
1、批量处理脚本命令
语法格式
/usr/shell/all.sh [命令]
语法示例
/usr/shell/all.sh date
2、批量分发脚本命令
语法格式
/usr/shell/scp.sh [当前系统需要copy的文件名] [所有系统需要copy的目的路径]
语法示例
/usr/shell/scp.sh /home/test.txt /hom