SSH登录远程主机执行脚本找不到环境变量

这是因为在Linux上,bash会有四种模式,根据不同的case,Linux会加载不同模式的bash。一般如果你自己直接登录主机,能看到环境变量,但是使用ssh 远程登录执行脚本就找不到环境变量,那么在你的脚本中修改脚本解释器为如下形式,就能解决你的问题:

#!/bin/bash --login

如果想了解详细的bash的四种模式以及各种模式的特点,请参考下面这篇文章,分析的非常详细:

SSH连接远程主机执行脚本的环境变量问题

时间: 2024-10-24 00:01:51

SSH登录远程主机执行脚本找不到环境变量的相关文章

sudo执行脚本找不到环境变量解决方法

问题: 当普通用户下,设置并export一个变量,然后利用sudo执行echo命令,能得到变量的值,但是如果把echo命令写入脚本, 然后再sudo执行脚本,就找不到变量,未能获取到值. 原因 sudo运行时,会默认重置环境变量为安全的环境变量,也即,但前设置的变量都会失效,只有少数配置文件中指定的环境变量能保存下来. sudo的配置文件是 /etc/sudoers 需要root权限才能读取: 在/etc/sudoers中修改:Defaults    env_reset为:Defaults   

解决SSH远程执行命令找不到环境变量的问题

通过SSH执行远程主机的命令或脚本时,经常会出现找不到自定义环境变量的问题.但是,如果通过SSH登录远程主机,然后再执行相同的命令或脚本,那么此时执行又是成功的.两种相似的方法,得到的结果却截然不同,看起来很诡异的现象,根本原因在于这两种方式使用的bash模式不同! 1. 通过SSH登录后再执行命令和脚本这种方式会使用Bash的interactive + login shell模式,这里面有两个概念需要解释:interactive和login. login故名思义,即登陆,login shell

ssh连接远程主机执行脚本的环境变量问题

用ssh命令ssh [email protected] "/web/tomcat-7000/bin/startup.sh" 登陆到远程机器remote上执行脚本时,遇到一个奇怪的问题:tomcat服务不能启动 Neither the JAVA_HOME nor the JRE_HOME environment variable is definedAt least one of these environment variable is needed to run this progr

shell 脚本实战笔记(2)--环境变量PATH的恩怨情仇

在linux环境下, 相信大家对环境变量PATH, 多多少少有所接触, 这边讲讲PATH的在linux的前世因缘. 先讲讲一个列子 假如我们在为一个新的应用配置其PATH路径中时,  不小心忽略了原先的$PATH内容, 把原本的PATH=/path/to/newcmd:$PATH, 写成了PATH=/path/to/newcmd, 并不小心写入了~/.bashrc, 并且source ~/.bashrc. 这时会发生什么? 我们如何去处理这种情况? 所有的命令都不能用了, 想回去编辑~/.bas

ssh无密码登录远程主机执行特定命令的注意事项

最近的一个项目要结合使用rabbitmq.keepalived.supervisor.其中的一个场景为某个keepalived实例被提升为MASTER后需要到部署了rabbitmq client的远程主机上kill掉这些client进程. 一般的思路为配置keepalived所在主机与部署了client的主机之间的无密码ssh登录,然后通过ssh执行远程命令,先获取各client进程的进程号,然后逐个kill掉这些进程. 大体思路很简单,但过程中却碰到了不少问题.配置无密码ssh至远程主机的步骤

expect实现自动scp和ssh登录后执行命令,并向bash提供返回值

#!/bin/bash # 全局变量:用户名,普通用户密码,root密码 loginname="icgsu" userpwd="netentsec" rootpwd="netentsec" # 读取iplist cat /root/iplist | while read line do ip=($line) # scp脚本及ssh登录执行 /usr/bin/expect<<EOF set timeout 10 spawn scp /r

SSH 无密码远程执行脚本

ssh无密码登录及远程执行脚本要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS7为例. 测试环境:机器A(10.0.224.80):机器B(192.168.7.172).现想A通过ssh免密码在B上远程执行命令. 1.首先在A机下生成公钥/私钥对:(-P表示密码,-P '' 就表示空密码,一次回车即可.在~/.ssh会生成id_rsa和id_rsa.pub两个文件) [[email protected] home]# ssh-keygen -t r

解决SSH登录用户执行的命令部分环境变量参数不生效的问题

问题概况 linux机器在/etc/profile配置完成环境变量后,SSH到目标机器执行命令,但是获取不到已配置的环境变量值. 例如场景: 在/etc/profile配置了http代理 export all_proxy=http://$PROXY_HOST:8118 export ftp_proxy=http://$PROXY_HOST:8118 export http_proxy=http://$PROXY_HOST:8118 export https_proxy=http://$PROXY

怎样用cmd脚本添加Qt的环境变量

在网上遍历了很久,终于找到了一个简单且令人满意的答案: 定位到PyQt5发布文件所需的plugins的位置: 新建一个名为"设置环境变量"的cmd脚本,在里面写上: wmic ENVIRONMENT create name="QT_QPA_PLATFORM_PLUGIN_PATH",username="<system>",VariableValue="%cd%\plugins" 保存关闭后执行. 原文地址:http