3 votes

Comment charger les variables d'environnement dans une machine AIX distante via ssh tout en exécutant script à partir du pipeline Jenkin ?

Nous utilisons certains modules personnalisés dans notre cadre d'automatisation Perl qui fonctionne à travers le pipeline Jenkin. Récemment, nous avons obtenu l'erreur "package not found" pour tous les modules personnalisés lors de l'exécution des cas de test dans les serveurs AIX, car la dernière version de Perl y est installée. Nous avons donc essayé d'ajouter "PERL5LIB" dans le chemin comme mentionné dans le document.

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

Nous avons ajouté "export PERL5LIB=/home/foobar/code" dans le fichier /etc/profile du serveur AIX et le script s'exécute sans aucun problème lorsqu'il est exécuté depuis la machine AIX locale.

Question :

Mais nous avons le pipeline Jenkin pour exécuter les scripts dans le serveur AIX en utilisant ssh. Maintenant, lorsque nous faisons SSH au serveur AIX dans le pipeline scripts les variables que nous avons définies dans /etc/profile ne se charge pas et nous obtenons l'erreur package not found.

Question : Comment puis-je charger le profil dans le serveur AIX tout en l'exécutant à partir du pipeline ? ou existe-t-il un autre moyen de gérer cela. Avant d'exécuter script, je veux exporter PERL5LIB dans le serveur AIX distant par le biais de pipeline (une seule fois) et le je ne devrais pas obtenir l'erreur package not found.

Voici les solutions que j'ai essayées :

Chargez le /etc/profile : ssh AIX server ./etc/profile (en utilisant le point puisque la source ne fonctionne pas sous AIX)

Ajout de la ligne "export PERL5LIB=/home/foobar/code" dans le fichier .ssh/environnement du serveur AIX et définition de PermitUserEnviorment yes.

J'apprécierais toute aide à ce sujet.

2voto

Lorinczy Zsigmond Points 149

Attribuez des valeurs aux variables de la manière habituelle :

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

ou

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

Éditer : Si vous devez exécuter plusieurs commandes, créez un script et téléchargez-le sur l'ordinateur cible, par exemple :

SCRIPTNAME=/tmp/$$.$RANDOM.script
scp myscript.sh user@host:"$SCRIPTNAME"
ssh user@host "$SCRIPTNAME"

0voto

Ce problème est résolu par les modifications suivantes.

Étape 1 : modifiez ~/.ssh/environnement. Ajoutez la variable PERL5LIB="/chemin du module/".

Étape 2 : Modifier /etc/ssh/sshd_config. Changez la variable PermitUserEnvironment de no à yes. Décommentez-la si elle est commentée. Cela permettra l'accès des variables d'environnement à SSH.

Étape 3 : Redémarrez le service SSHD. (C'est impératif. J'avais déjà essayé les étapes 1 et 2 mais je n'avais pas redémarré le service, donc la solution ne fonctionnait pas).

Nous pouvons créer un script et le lancer avant d'exécuter le test d'automatisation à partir du pipeline.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X