sshpass 命令踩坑记录--未获取环境变量

简介: sshpass 命令踩坑记录--未获取环境变量

sshpass 命令踩坑记录–未获取环境变量

近日,由于某个厂商的安全流量分析的探针导致了java进程假死,在使用jstack命令却报虚拟机版本不匹配的问题。几番查询,发现未使用该用户配置在.bash_profile下的java环境变量。而是操作系统预装的openJdk

不执行用户目录下.bash_profile

因此,通过root用户 yum 删除了openJdk。然引起了gitee企业版流水线执行主机部署阶段报出异常 java命令找不到。

不执行/etc/profile

接着,通过root用户在/etc/profile中配置了java环境变量。然流水线仍然报错,java命令找不到。

对比预装openJdk

通过 whereis java命令,对比了其他还保留预装openJdk的机器,发现java命令的位置在/usr/bin/下。

建立软链接

通过 **ln -s 被链接的源文件 链接文件**的方式将java命令链接为/usr/bin/java。之后流水线就正常运行了。

三者对比

通过个人电脑,对三种情况(root/个人用户/sshpass)进行了比较,得到如下结果:

wanglh@dark:~$ su - root
请输入密码:
验证成功
root@dark:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
root@dark:~# exit
注销
wanglh@dark:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin:/snap/bin
wanglh@dark:~$ sshpass -p 密码 ssh -o 'StrictHostKeyChecking=no' wanglh@127.0.0.1 'echo $PATH'
/usr/local/bin:/usr/bin:/bin:/usr/games

环境变量果然是sshpass得到的最少。

登录方式的不同

linux 登录分 交互式登录、非交互式登录。我们正常登录终端是交互式登录,使用脚本去执行就是非交互式登录。

例如我们在切换用户时使用的su - username、su username即是不同的方式,带着“-”符号的为交互式的方式登录,会清空当前的环境变量,并去执行初始化脚本。而后者则是继承当前的环境变量。

总结

java命令会受到环境变量的影响,使用了其他版本的jdk。最好,环境中只存在一个java环境。

另外,该厂商给出意见,对于流水线中的脚本,可以指明java命令的绝对路径,防止此类问题。

目录
相关文章
|
3月前
|
Ubuntu Shell Linux
使用sshpass工具通过SSH执行远程命令
`sshpass`是一个用于在脚本中自动输入SSH密码的工具 **在Debian/Ubuntu上安装sshpass:** ```bash sudo apt-get install sshpass ``` **在CentOS/RHEL上安装sshpass:** ```bash sudo yum install sshpass ``` **在Fedora上安装sshpass:** ```bash sudo dnf install sshpass ``` 安装完成后,你可以使用`sshpass`命令通过SSH执行远程命令。以下是一个示例: ```bash sshpass -p 'yo
329 0
|
9月前
|
数据安全/隐私保护 Perl
sshpass-如何在脚本中执行scp时自动输入密码
sshpass-如何在脚本中执行scp时自动输入密码
84 0
|
SQL 关系型数据库 MySQL
The user specified as a definer (‘root‘@‘%‘) does not exist【亲测可用,服务器端】
The user specified as a definer (‘root‘@‘%‘) does not exist【亲测可用,服务器端】
69 0
The user specified as a definer (‘root‘@‘%‘) does not exist【亲测可用,服务器端】
|
弹性计算 监控 Ubuntu
Ubuntu的SSH安全配置,查看SSH登录日志文件,修改默认端口,UFW配置防火墙,禁止root用户登录,禁用密码登陆,使用RSA私钥登录,使用 Fail2ban 工具,使用两步验证(2FA)
Ubuntu的SSH安全配置,查看SSH登录日志文件,修改默认端口,UFW配置防火墙,禁止root用户登录,禁用密码登陆,使用RSA私钥登录,使用 Fail2ban 工具,使用两步验证(2FA)
2099 0
|
Shell Linux 网络安全
解决SSH登录用户执行的命令部分环境变量参数不生效的问题
问题概况 linux机器在/etc/profile配置完成环境变量后,SSH到目标机器执行命令,但是获取不到已配置的环境变量值。 例如场景: 在/etc/profile配置了http代理 export all_proxy=http://$PROXY_HOST:8118 export ftp_pr...
2475 0
|
网络安全 数据安全/隐私保护
sshpass的使用方法
实例1:直接远程连接某台主机: 命令:sshpass -p '密码' ssh root@192.168.11.11     【默认为22端口】   实例2:远程连接指定ssh的端口: 命令:sshpass -p '密码' ssh -p 1000 root@192.
1453 0