系统相关
首页 > 系统相关> > Shell--一键分发脚本----解密

Shell--一键分发脚本----解密

作者:互联网

Shell–一键分发脚本----解密

制作一键分发脚本

在路径usr/local/bin目录下创建脚本名字自己定,我的是xsync
在这里插入图片描述

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
  echo Not Enough Arguement!
  exit;
fi
#2. 遍历集群所有机器
for host in hadoop101 hadoop102 hadoop103
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 exists!
    fi
  done
done

脚本核心原理

这就是个简单的脚本,你们自己还可以完善,就是简单的实现分发的功能。
就这句:rsync -av pdir/pdir/pdir/fname host:host:host:pdir
为什么呢?
我们可以玩个游戏,我们现在有三台虚拟机,我想在103上面拿101上面的东西,在知道他密码的情况下,不经过他同意,可不可以,我们设置过免密了,如果没设置我们就得输入密码才能传,这里我们是直接就传输了,你们可以把密钥删了,玩一把
首先我们在Hadoop101的上创建一个文件
命令:
cd /opt/moudle/ 进入到module中
然后我们创建一个aaa.txt文件里面写上1234567

在这里插入图片描述
在103上输入命令去101上拿,还是那句话,我设置免密了,瞬间就能拿到,并放到我的103上的module中,如果你们想玩不带密码的,把公钥删了。
我们去看一下103中是不是什么都没有
在这里插入图片描述
没有,我就去101上拿,看能不能拿到,很不巧,拿到了。
在这里插入图片描述

思考题
我能不能在102上面讲101的东西给103?假如你在单位,同时知道了同事A的密码和同事B的密码,能不能不经过他俩同意,将他们的资料,文件,相互传输呢?自己可以试试,不会了可以私信,或者底下留言。

标签:脚本,Shell,pdir,一键,解密,host,file,103,101
来源: https://blog.csdn.net/weixin_45284133/article/details/105464983