CentOS 7远程执行ndaf-cluster-status命令失败求助
解决远程执行ndaf-cluster-status失败的问题
问题根源
通过ssh远程执行命令时,默认启动的是非交互式shell,不会加载用户登录时自动执行的环境初始化脚本(就是你登录时看到的Setting up the MasterClaw environment...这一步)。这就导致两个问题:
- 直接执行命令时,系统
PATH里没有ndaf-cluster-status的路径,所以提示找不到命令 - 用全路径执行命令时,命令依赖的
q7java不在当前PATH中,依然报错
解决方案
方案1:先加载环境初始化脚本再执行命令
登录远程服务器,找到初始化MasterClaw环境的脚本(可能是用户shell配置文件,比如.kshrc、.profile,或者专门的环境设置脚本),远程执行时先加载该脚本:
# 假设环境初始化脚本是用户家目录的.kshrc ssh -q hadoop1 ". ~/.kshrc && ndaf-cluster-status" # 如果是专门的MasterClaw环境脚本,比如/opt/anritsu/mclaw/bin/setup-env.sh ssh -q hadoop1 ". /opt/anritsu/mclaw/bin/setup-env.sh && ndaf-cluster-status"
方案2:手动指定依赖命令的路径
先登录远程服务器,执行which q7java找到它的路径(比如得到/opt/anritsu/mclaw/jre/bin/q7java),然后远程执行时把该路径加入PATH:
ssh -q hadoop1 "PATH=\$PATH:/opt/anritsu/mclaw/jre/bin && /opt/anritsu/mclaw/bin/ndaf-cluster-status"
方案3:配置ssh让非交互式shell加载环境(需管理员权限)
如果有远程服务器的管理员权限,可修改/etc/ssh/sshd_config,确保PermitUserEnvironment yes项启用(去掉前面的注释),然后在用户家目录的.ssh/environment文件中添加需要的环境变量:
PATH=/opt/anritsu/mclaw/bin:/opt/anritsu/mclaw/jre/bin:$PATH
修改后重启sshd服务:systemctl restart sshd
内容的提问来源于stack exchange,提问作者Carlos Martin
相关产品推荐
相关产品推荐

