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