Attribuer une valeur à une Variable de script à partir d'une variable OS

Samuel BrenotSamuel Brenot ParisPosts: 37 Journeyman ✭✭✭
Bonjour,

Il est simple, dans OA (onglet traitement d'un job unix ou Windows), de faire interpréter une variable OA dans une variable OS ou une ligne de commande OS (unix ou windows), mais je n’arrive pas à faire l’inverse : donner une valeur à une variable OA à partir d’une variable OS

Par ex si je valorise une variable unix avec une variable OA :
:set &MSG1_OA#="bonjour1"
msg1=&MSG1_OA#
echo "message_OA=&MSG1_OA#"
echo "message2_OA=$msg1"
:print "message3_OA=&MSG1_OA#"
Rendra :
- Dans le rapport
message_OA=bonjour1
message2_OA=bonjour1
- Dans Activation
message3_OA=bonjour1

Par contre si je veux valoriser une variable OA par une variable unix :
msg2="bonjour2"
:set &MSG2_OA#=$msg2
echo "message_OA=$msg2"
:print "message2_OA=$msg2"
:print "message3_OA=&MSG2_OA#"
Rendra :
- Dans le rapport
message_OA=bonjour2
- Dans Activation
message2_OA=$msg2
message3_OA=$msg2
Donc &MSG2_OA# n'est pas valorisée avec la valeur de $msg2 alors que c'est mon besoin.

Comment est-il possible de valoriser une variable OA par une variable OS ?


Merci d'avance
Tagged:

Comments

  • Jeremy ClereJeremy Clere Posts: 184Team Automic Journeyman ✭✭✭
    Pour valoriser une variable OA par une variable OS il est préférable d'utiliser la fonction register_variable. La documentation se trouve ici:
    http://docs.automic.com/documentation/AE/11.2/english/AE_WEBHELP/help.htm?product=awa#ucsaba.htm

    Cette fonction permet de retrouver une variable émise par un interpreteur externe. Vous aurez besoin de l'utiliser entre:BEGIN_EXT_INTERPRETERS et :END_EXT_INTERPRETERS :
    http://docs.automic.com/documentation/AE/11.2/french/AE_WEBHELP/Content/ucsaby.htm

    Vous devez aussi définir une variable UC_EXT_INTERPRETER:
    http://docs.automic.com/documentation/AE/11.2/french/AE_WEBHELP/help.htm?product=awa#ucsabx.htm

    Bien cordialement

    Jeremy
  • Samuel BrenotSamuel Brenot ParisPosts: 37 Journeyman ✭✭✭
    Je ne suis pas sûr de bien comprendre le fonctionnement.

    Voici ce que je comprends:

    1/
    Il faut commencer par renseigner la variable UC_EXT_INTERPRETERS_UNIX dans le client 0.
    Or, je n'ai qu'une commande à lancer, en l'occurrence ssh automic@prdgtidb "hostname", que je prévoyais de mettre dans un script interne à mon job unix.
    Je comprends donc qu'il faut que je passe par un script externe.

    Celui-ci (serveur.sh) ne contiendra qu'une ligne:
    serveur =`ssh automic@prdgtidb "hostname"`

    Je renseigne donc UC_EXT_INTERPRETERS_UNIX avec
    Clé Valeur1
    SH .sh

    2/
    Ensuite, dans l'onglet traitement je dois mettre un contenu du type
    :BEGIN_EXT_INT SH
    /appli/automic/test/serveur.sh
    :REGISTER_VARIABLE "serveur#", XXXXX
    :END_EXT_INT SH

    Mais que suis-je sensé mettre à la place de XXXXX ?
    Sur ce point, la doc n'est pas, pour moi, assez explicite.

    3/
    Et comment dois-je faire pour transmettre cette valeur (le contenu de $serveur) aux jobs successeurs ?
    Je pensais utiliser un RSET, mais je ne vois pas comment l'intégrer.
  • Jeremy ClereJeremy Clere Posts: 184Team Automic Journeyman ✭✭✭
    Je vous envoie un exemple de scripts sous Unix qui permet d'utiliser la fonction REGISTER_VARIABLE.

    Dans l'onglet traitement il faut mettre cet exemple de code:

    test="Schubiduba"

    echo $test

    :REGISTER_VARIABLE "scriptvar#", $test

    Dans l'onglet Post traitement il faut mettre cette commande:

    :print &scriptvar#

    Rapport du job:

    2016-05-27 12:46:23 - U00020206 La variable '&SCRIPTVAR#' a été enregistrée avec la valeur 'Schubiduba'.
    2016-05-27 12:46:23 - U00020408 Schubiduba

    Bien cordialement

  • Michael LowryMichael Lowry Project Manager ZurichPosts: 1,314 Innovator ✭✭✭✭✭✭
    edited June 2016
    J’ai écrit un petit document avec des exemples illustrant l’utilisation de:REGISTER_VARIABLE avec Bash, Perl, Python, Ruby, et PowerShell (en anglais):
    :REGISTER_VARIABLE — practical examples with Bash, Perl, Python, Ruby, and PowerShell


  • Antoine SauteronAntoine Sauteron ViennaPosts: 691Automic Moderator, Team Automic mod
    edited June 2016
    Bonjour Samuel,

    La commande :SET ne peut pas être utilisée pour définir une variable via l'OS.

    Il te faut utiliser :REGISTER_VARIABLE à la place.

    Ta variable pourra ensuite être utilisée dans l'onglet PostProcess.

    Cordialement,
    Antoine
    EMEA Support: +43 57 080 90
    support@automic.com


Sign In or Register to comment.