centos7 配置xsync文件分发脚本,以及permission denied问题的解决(代码和方法测试通过)

这个脚本会在**/usr/local/bin/**中编写,如果不能创建文件考虑sudo命令

调用时直接 xsync 要更新文件的全路径名

先贴一个网上的可能出问题的代码:

#!/bin/bash
# $#:表示传递给脚本或函数的参数个数。
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for((host=203; host<205; host++)); do
        #echo $pdir/$fname $user@192.168.3.15$host:$pdir
       rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done

问题出现在25行user@hadoop$host

回忆一下ssh无密码登录的配置,经常出现配置ssh了之后还需要有密码登录
会提示 user@hadoop$host.password:
比如 hadoop202@hadoop203.password:

这时输入密码可能就会有permission denied

关于ssh配置的permission denied解决方法可以参考https://blog.csdn.net/qq_43816521/article/details/107969305)

这个问题猜测有关ssh协议和rsync协议之间的配置,毕竟rsync,scp都基于ssh

但是用单个rsync命令可以正常分发文件,
比如 rsync -rvl /opt/test hadoop203@hadoop203:/opt

所以参考rsync的命令格式(hadoop203@hadoop203)和代码本身,
考虑在脚本中做修改,将user@hadoop$host 改成 hadoop$host@hadoop$host

注意这里假设已经配置了主机映射,第二个hadoop$host代表了一个ip,没有配置主机映射的话可以去/etc/hosts修改

贴一个正确的代码,已经在自己的虚拟机运行过了

#!/bin/bash
# $#:表示传递给脚本或函数的参数个数。
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for((host=203; host<205; host++)); do
        #echo $pdir/$fname $user@192.168.3.15$host:$pdir
       echo --------------- hadoop$host ----------------
       rsync -rvl $pdir/$fname hadoop$host@hadoop$host:$pdir
done

至此配置基本结束,但需要设置一些权限不然不能运行

设置权限:
chmod 777 xsync
chown username:username xsync (假设username已经加在/etc/sudoers)

对于被分发文件的虚拟机的文件夹也要设置权限,比如 chmod 777 /opt

调用 xsync /opt/test 验证是否成功

注意在粘贴代码的时候最后一个循环需要调整为自己的集群的情况

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值