在从Jenkin管道运行脚本时如何通过ssh在远程AIX机器中加载环境变量?

问题描述 投票:2回答:1

我们正在通过Jenkin管道运行的Perl自动化框架中使用一些自定义模块。最近,在AIX服务器中执行测试用例时,由于在其中安装了最新的Perl版本,在所有自定义模块中都没有发现包错误。因此,我们尝试在文档

中提到的路径中添加“ PERL5LIB”

https://perlmaven.com/how-to-change-inc-to-find-perl-modules-in-non-standard-locations

我们在AIX服务器的/ etc / profile中添加了“ export PERL5LIB = / home / foobar / code”,并且从本地AIX计算机运行时脚本被执行而没有任何问题。

问题:

但是我们有Jenkin管道,可以使用ssh在AIX服务器中执行脚本。现在,当我们在管道脚本中对AIX服务器执行SSH时,在/ etc / profile中设置的变量将不会加载,并且会出现未找到包错误。

问题:从管道运行概要文件时,如何在AIX服务器中装入概要文件?还是有其他方法可以解决这个问题。在执行脚本之前,我想通过管道(仅一次)在远程AIX服务器中导出PERL5LIB,并且我不应该得到未找到包的错误。

以下我尝试过的解决方案:

加载/ etc / profile:ssh AIX服务器./etc/profile(由于源不能在AIX中使用,所以使用点号)

在AIX服务器中的.ssh / environment中添加此行“ export PERL5LIB = / home / foobar / code”并设置PermitUserEnviorment yes

感谢任何帮助。

perl ssh jenkins-pipeline aix jenkins-groovy
1个回答
1
投票

以通常的方式为变量分配值:

ssh user@host 'export PERL5LIB=/somepath; echo $PERL5LIB'
user@hosts's password:
/somepath

ssh user@host '. /etc/profile.local; echo $PERL5LIB'
user@hosts's password:
/somepath/from/profile

编辑:如果必须执行多个命令,请创建一个脚本并将其上传到目标计算机,例如:

SCRIPTNAME=/tmp/$$.$RANDOM.script
scp myscript.sh user@host:"$SCRIPTNAME"
ssh user@host "$SCRIPTNAME"
© www.soinside.com 2019 - 2024. All rights reserved.