这个脚本是我在上面的视频(https://www.bilibili.com/video/BV1Qp4y1n7EN?p=28)中看到的,但是不符合我的虚拟机实际情况,我耗费了自己的晚上时间开始学习和编写这个脚本,终于调通了,放这里以备以后看。也供大家用。
#!/bin/bash
# 1 判断参数个数
if [ $# -lt 1 ]
then
echo Not enough Arguments!
exit;
fi
# 2 遍历集群所有机器
for host in node2 node3
do
echo ================================= $host ================================
# 3 遍历所有目录,挨个发送
for file in $@
do
# 4 判断文件是否存在
# echo the args is $file!!!
if [ -e $file ]
then
# 5 获取父目录 这里的等号需要有空格!
if [ $host = node2 ];
then
# pdir=/home/peter/Documents
# echo node is node 2!
pdir=$(cd -P $(dirname $file); pwd)
len=${#pdir} # 可以返回字符的长度
pdir=${pdir:0:6}tim${pdir:11:$len} # 这里的等号不能有空格,哎,,,, 这个命令是字符的拼接
echo $pdir
else
if [ $host = node3 ]
then
# echo node is node 3!
pdir=$(cd -P $(dirname $file); pwd)
len=${#pdir}
pdir=${pdir:0:6}alex${pdir:11:$len}
else
echo node is error!
fi
echo $pdir
fi
# 6 获取当前文件的名称
# fname=$(basename $file)
# ssh $host "mkdir -p $pdir"
# rsync -av $pdir/$filename $host:$pdir
else
echo $file does not exits!!
fi
done
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。