非交互式ssh command无法找到命令command not found

起因

        mha做check时无法获得node的版本

  

问题判断

        分析下源码

执行的代码实际是

ssh $MHA::ManagerConst::SSH_OPT_ALIVE $ssh_user_host -p $ssh_port apply_diff_relay_logs --version

这里附一下ssh用的const

SSH_OPT_ALIVE   
"-o ServerAliveInterval=60 -o ServerAliveCountMax=20 -o StrictHostKeyChecking=no -o ConnectionAttempts=5 -o PasswordAuthentication=no -o BatchMode=yes";

SSH_OPT_CHECK 
"-o StrictHostKeyChecking=no -o PasswordAuthentication=no -o BatchMode=yes -o ConnectTimeout=VAR_CONNECT_TIMEOUT";

我们这里简化一下进行测试

ssh node1 apply_diff_relay_logs --version

复现出错误

分析

已经可以确认是环境变量的问题。但是有以下现象

1、ssh登录上去时命令调用正常

2、ssh node1 env无法看到apply_diff_relay_logs的环境变量

解法1

使用ln -s制作软连接,将apply_diff_relay_logs等mha命令软连接到可用的bin下。测试ssh node1 date可以用,就在目标机which date,使用对应bin

解法2

通过查资料,得知这种无交互的ssh读取的变量是/etc/environment

那就修改其值,验证得到解决

附例

cat /etc/environment 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"

学习原理,积累工具。孵化思路,下笔有道。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值