我们正在通过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
感谢任何帮助。
以通常的方式为变量分配值:
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"