ansible远程执行指令,/bin/sh: java: command not foundnon-zero return code

news/2024/11/8 9:29:29/

问题描述:ansible远程执行指令,初选指令加载不全,

[root@VM-0-6-centos ~]# ansible all -m shell -a "java -version"
10.206.0.15 | FAILED | rc=127 >>
/bin/sh: java: command not foundnon-zero return code

解决方案:【ansible问题处理】远程执行用户环境变量加载问题_ansible 加载环境变量_一边学习一边哭的博客-CSDN博客

终极解决方法(1): 

#cd /application 
#tar xzf jdk-8u144-linux-x64.tar.gz -C /application/
mv /application/jdk1.8.0_144  /application/jdk
cat >> /etc/profile.d/java.sh << EOF
export JAVA_HOME=/application/jdk
export PATH=$JAVA_HOME/bin:$PATH
EOF
source /etc/profile.d/java.sh

经过测试,这个可以直接在ansible中使用,自动加载,不过需要在宿主机中source一下

(2)终极解决方法

思路:

 

       用SSH客户端(比如Putty)登陆Linux系统时,要求输入用户名/密码登录或根据SSH key登录时,就是login shell。
       运行man bash可以查看环境配置文件的说明,以CentOS7为例:
       1. /etc 下的是系统环境配置,对所有用户有效,但是/etc/profile只对login shell有效,而/etc/bashrc对login shell和non-login shell都有效。
       2.  ~下的是当前用户环境配置,当前用户环境配置会继承/etc系统环境配置。 
      login shell加载环境变量的顺序是:
           ①/etc/profile
           ②~/.bash _profile
           ③~/.bashrc
           ④/etc/bashrc
    而non-login shell加载环境变量的顺序是:
           ①~/.bashrc
           ②/etc/bashrc
        ansible这类远程执行的non-login shell 并不会加载/etc/profile和~/.bash_profile下的环境变量,只是加载~/.bashrc和/etc/bashrc。
        测试1:  三台机器,用ansible管理,其中1台直接在vim /etc/bashrc,添加java环境变量,然后ansible批量执行,发现设置/etc/bashrc的那台执行成功。直接账号密码中shell登录,使用java环境变量,也会报错没有。

直接

cat >> /etc/bashrc << EOF
export JAVA_HOME=/application/jdk
export PATH=$JAVA_HOME/bin:$PATH
EOF

(3)命令使用绝对路径


http://www.ppmy.cn/news/331902.html

相关文章

水星mw310r虚拟服务器,水星MW310R无线路由器固件升级图文教程【详解】

水星MW310R无线路由器怎么升级? 无线路由器好比将单纯性无线AP和宽带路由器合二为一的扩展型产品。 无线路由器其内置有简单的虚拟拨号软件&#xff0c;可以存储用户名和密码拨号上网&#xff0c;可以实现为拨号接入Internet的ADSL、CM等提供自动拨号功能&#xff0c;而无需手…

mw325r 服务器无响应),新版水星(Mercury)MW325R拨不上号怎么办?【图解】

新版水星(Mercury)MW325R拨不上号怎么办&#xff1f; 问&#xff1a;买的新款水星(Mercury)MW325R路由器设置完宽带帐号和密码了&#xff0c;但是怎么也拨不上号获取不到IP地址&#xff0c;这是怎么回事&#xff1f;我的水星MW325R路由器突然上不了网了&#xff0c;看了下没有拨…

mw310r无线路由器怎么设置虚拟服务器,水星mw310r无线路由器接光猫怎么设置?

在本文中&#xff0c;将给大家详细的介绍&#xff0c;水星mw310r路由器连接光猫上网的设置方法。 温馨提示&#xff1a; 如果你的水星mw310r路由器已经设置/使用过了&#xff0c;建议先把它恢复出厂设置&#xff0c;然后按照本文的方法来设置上网。 如果不清楚如何将其恢复出厂…

路由器mw320虚拟服务器,水星MW320R中继怎么设置_水星MW320R桥接设置-192路由网

本文主要介绍了水星MW320R路由器的中继(桥接)设置教程&#xff0c;也就是用水星MW320R路由器&#xff0c;来放大原来路由器的无线信号&#xff0c;实现扩大无线信号覆盖范围的目的。 水星MW320R无线路由器&#xff0c;要桥接原来路由器的无线信号&#xff0c;整个设置过程&…

水星路由服务器无信号,水星路由器MW326R没有WiFi信号了怎么回事?【图解】

水星路由器MW326R没有WiFi信号了怎么回事? “水星路由器MW326R没有WiFi信号了怎么回事?”这是今天遇到的一个网友问到的问题。说是自己正在使用的水星(mercury)无线路由器MW326R突然没有无线信号了,询问该如何解决WiFi信号的问题。 对于一台无线路由器突然没有了WiFi信号,常…

水星mw310r虚拟服务器,水星MW310R(V1-V4)路由器桥接设置教程 | 192路由网

本文主要介绍了水星MW310R(V1-V4)路由器WDS桥接设置方法,也可以说是无线中继设置。但是需要注意的是,是V1-V4版本的水星MW310R路由器的无线桥接设置方法哦! 温馨提示: 水星MW310R路由器目前有V1、V2、V3、V4、V5共5个版本。 V1-V4版本的MW310R路由器,无线桥接设置方法相同…

mw325r设置虚拟服务器,水星MW325R无线桥接设置教程 | 192路由网

问:水星MW325R路由器无线桥接怎么设置?我有一台水星的MW325R路由器,想用它来桥接另一台无线路由器的Wi-Fi信号,请问具体应该怎么设置? 答:水星MW325R路由器的无线桥接设置,还是非常简单的。只需要先登录到MW325R路由器的设置界面,找到打开“WDS无线桥接”这个选项,并按…

mw313r路由器怎么设置虚拟服务器,水星mw313r路由器怎样设置桥接

用水星mw313r作副路由&#xff0c;它是新式WDS。 新式WDS只需在副路由上绑定主路由即可。 1、将主路由设置固定频道(如3) 2、改IP&#xff0c;假设你的主路由的IP是192.168.n.1&#xff0c;把副路由设为192.168.n.2。重启后&#xff0c;再打192.168.n.2&#xff0c;进入副路由在…