注意:脚本放在~/bin目录下,并设置权限为777
① 集群列表脚本:需要同步的节点。
vim node.list
node01
node02
node03
② 集群文件分发脚本:用于分发集群文件。
vim ssh_do_scp.sh
#!/bin/bash
if [ $# -lt 3 ];
then
echo "Usage: $0 <node-list-file> <source-file> <target-file>"
exit
fi
nodeList=$1
files=$2
target=$3
noscp=node01
for node in $(cat $nodeList)
do
if [ $node == $noscp ]; then
echo ==================== $node ====================
echo "skip node01"
else
echo ==================== $node ====================
#判断是文件还是目录
if [ -f $files ];then
#传送单个文件
echo "param is file"
scp $files root@$node:$target
elif [ -d $files ];then
#遍历所有目录,挨个发送
echo "param is dir"
scp -r $files root@$node:$target
else
echo "file or dir is not exist"
fi
fi
done
③ 集群同步命令脚本: 用于集群内各节点执行相同命令
vim ssh_do_all.sh
#! /bin/bash
nodeList=$1
commond=$2
if [ $# -lt 2 ];
then
echo "Usage: $0 <node-list-file> <commond>"
exit
fi
for node in $(cat $nodeList)
do
echo ==================== $node ====================
ssh -t $node $commond
done
④ 测试
测试文件分发脚本
测试同步命令脚本