【发布时间】:2016-02-17 19:54:57
【问题描述】:
假设我正在尝试执行一个包含一行的脚本 userScript
env > ENVIRONMENTAL_VARIABLES.txt
我通过以下两种方式做到这一点。
1.
通过使用 ssh 实际登录:
ssh host
password:xyz***
./userScript
ENVIRONMENTAL_VARIABLES.txt 确实被创建并包含命令 env 的结果。
2.
ssh -i key host 'userScript'
在这种情况下不会创建 ENVIRONMENT_VARIABLES.txt。
另外,我相信第一种情况将是交互式外壳的示例,而第二种情况是非交互式外壳的示例(如果我错了,请纠正我。)。并且两种机制存在差异(.profile、.bashrc 等文件是否被执行)。
如何确保在第二种情况下也创建 ENVIRONMENT_VARIABLES.txt?要为其更改哪些环境变量?
【问题讨论】:
-
它是根本没有被创建,还是没有在您期望的地方创建?如果您尝试完整路径和/或在脚本中打印出当前目录会发生什么?
-
@EtanReisner 根本没有被创建。这是一个简化的 sn-p。但是我并没有犯这么幼稚的错误。另外,如果 ENVIRONMENT_VARIABLES.txt 已经存在,则无法写入。
-
文件及其目录的权限是什么?您在每种方法中都向哪个用户发送密码?
-
@EtanReisner ssh -i Key host 'ls -l ENVIRONMENT_VARIABLES.txt' 给了我 -rw-r--r-- 权限,通过 ssh 登录时的 ls -l 也是如此。在这两种情况下用户也是相同的,我在 $USERS_HOME/scripts 目录中执行此操作
-
使用
ssh -i key host后手动运行脚本有效吗?是否有强制命令/等。也许是那个钥匙?
标签: linux shell unix ssh environment-variables