Communiquer avec le RCS

Le Remote Commande Server est un composant, installé sur chaque agent, permettant de réaliser des opérations à distance. Communiquer avec lui permet de bénéficier d’un outil distant multi-plateforme.
Maitriser ce composant permettra de bénéficier des mêmes fonctionnalités que les interfaces fournies par CA.
8 juillet 2008
POPULARITE : 1439 visites
Installer OpenSSL
La communication se fait en SSL, la première étape consiste à télécharger OpenSSL pour disposer d’un client.
Télécharger http://www.openssl.org/
L’installation est triviale et ne nécessite pas d’explication particulière, il n’est nul besoin de générer une clé ou quoi que ce soit pour pouvoir se connecter à l’agent.
Configuration de l’agent
Le RCS limite les connexions aux clients dument référencés dans le fichier validips.
Si vous souhaitez récupérer un fichier sur la machine distante, il faudra ajouter le répertoire dans le fichier valid_dirs.
Tout changement nécessite un arrêt/relance du RCS.
Connexion
Pour vous connecter a un agent host en utilisant le port host, vous devrez lancer la commande suivante :
openssl s_client -host {{host}} -port {{host}}
| host | machine avec laquelle vous souhaitez communiquer |
| port | Port du RCS (par défaut : 4444 |
Les informations suivantes sont renvoyées :
Loading 'screen' into random state - done
CONNECTED(00000784)
depth=1 /C=US/ST=NY/L=Islandia/O=CA/OU=Unicenter/CN=AutoSys/emailAddress=ca.com
verify error:num=19:self signed certificate in certificate chain
verify return:0
---
Certificate chain
0 s:/C=US/ST=NY/L=Islandia/O=CA/OU=Unicenter/CN=AutoSys/emailAddress=ca.com
i:/C=US/ST=NY/L=Islandia/O=CA/OU=Unicenter/CN=AutoSys/emailAddress=ca.com
1 s:/C=US/ST=NY/L=Islandia/O=CA/OU=Unicenter/CN=AutoSys/emailAddress=ca.com
i:/C=US/ST=NY/L=Islandia/O=CA/OU=Unicenter/CN=AutoSys/emailAddress=ca.com
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDZDCCAs2gAwIBAgIBATANBgkqhkiG9w0BAQQFADB3MQswCQYDVQQGEwJVUzEL
MAkGA1UECBMCTlkxETAPBgNVBAcTCElzbGFuZGlhMQswCQYDVQQKEwJDQTESMBAG
A1UECxMJVW5pY2VudGVyMRAwDgYDVQQDEwdBdXRvU3lzMRUwEwYJKoZIhvcNAQkB
FgZjYS5jb20wHhcNMDMwNTI3MTgxODU3WhcNMTMwNTI0MTgxODU3WjB3MQswCQYD
VQQGEwJVUzELMAkGA1UECBMCTlkxETAPBgNVBAcTCElzbGFuZGlhMQswCQYDVQQK
EwJDQTESMBAGA1UECxMJVW5pY2VudGVyMRAwDgYDVQQDEwdBdXRvU3lzMRUwEwYJ
KoZIhvcNAQkBFgZjYS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAK7V
90fAxujjKI/gqWjlPoP+Adczn0l0EIpxLifBtJWFVv3mE/FaAXKyhiRmTT08ZJuN
Cef7w89HuQrutRCxZ7yaYFdabzfq7rKGG8fqT9ApPJ9IFEBMZzwtSF1Ej6oj6BwB
5Mur5TAU9F0sJyU6UtveeRqAYcyHc9POGo0oJbmbAgMBAAGjgf8wgfwwCQYDVR0T
BAIwADAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNh
dGUwHQYDVR0OBBYEFBgGPCnYPdvYfy2kzhkJbjjvZQuDMIGhBgNVHSMEgZkwgZaA
FPj6i7X0hus6D7yqXLk7zQLbDj06oXukeTB3MQswCQYDVQQGEwJVUzELMAkGA1UE
CBMCTlkxETAPBgNVBAcTCElzbGFuZGlhMQswCQYDVQQKEwJDQTESMBAGA1UECxMJ
VW5pY2VudGVyMRAwDgYDVQQDEwdBdXRvU3lzMRUwEwYJKoZIhvcNAQkBFgZjYS5j
b22CAQAwDQYJKoZIhvcNAQEEBQADgYEArHm7EvV1oI2HHUxSg5w+cSwR80x/OWE0
iJY+ZqjU0BhchyoqXhQANddR5E2xq+l5P0kOAjUUwT5OSHwIo1eMwa0HLRjimcQt
Ae8CT38oLLQpuOFlty1RDCmD0g/V8pjyvRQ+VXt9mqnFj+vu3HlXEANZWAX92qRz
YPinGSA7DTw=
-----END CERTIFICATE-----
subject=/C=US/ST=NY/L=Islandia/O=CA/OU=Unicenter/CN=AutoSys/emailAddress=ca.com
issuer=/C=US/ST=NY/L=Islandia/O=CA/OU=Unicenter/CN=AutoSys/emailAddress=ca.com
---
No client certificate CA names sent
---
SSL handshake has read 2260 bytes and written 314 bytes
---
New, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
Server public key is 1024 bit
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : EDH-RSA-DES-CBC3-SHA
Session-ID: 4F9C7686A8A8A415D4AE628D54DC1823D50C00658EEF099C28AE750F4D4C6BF8
Session-ID-ctx:
Master-Key: 22528065ED3A01071F923146153781613DE2CED57FB72EC028BBA38836318C8A
A18EFE861886864F6D93AE417DFACC20
Key-Arg : None
Start Time: 1213373927
Timeout : 300 (sec)
Verify return code: 19 (self signed certificate in certificate chain)
---La réponse de l’agent est la suivante :
4.5.1
Listener for UAJM AutoSysAdapter
EOSLe EOS indique que l’agent est à l’écoute, il ne reste plus qu’à lui fournir les paramètres.
Pinger l’agent
Cette commande est simplement une garantie qu’on est correctement connecté, ce que l’on sait déjà puisque l’agent répond mais cela permet à l’interface Java de valider le bon fonctionnement.
Cette commande est la plus simple :
4.5.1
Listener for UAJM AutoSysAdapter
EOSEnvoyer PING puis Entrée
L’agent renvoit :
SUCCESS
EOSStopper la connexion
La communication peut être stoppée à tout moment par la commande SHUTDOWN.
Récupérer un fichier
Récupérer un fichier permet à l’interface d’obtenir la sortie standard ou la sortie d’erreur du traitement ainsi que le log de l’agent (si vous le supprimez pas en cas de SUCCESS de job).
Pour cela, on a besoin de quatre paramètres et de la commande fin :
L’action : JOBLOG
L’instance : INS (on prendra l’instance par défait d’Autosys : ACE)
Le fichier et son répertoire (le répertoire doit obligatoirement être dans le fichier valid_dirs).
Un timestamp au format posix (nombre de secondes depuis le 1er Janvier 1970) mais on peut mettre n’importe quel nombre
La commande de fin : OVERANDOUT
Si l’on veut récupérer un fichier toto dans le répertoire %AUTOUSER%\out de l’instance ACE, on tapera les 4 commandes suivantes :
JOBLOG
ACE
%AUTOUSER%\out\toto
1
OVERANDOUTL’agent répond :
FRESH
1213366831
26
? ?++/+þÕ? m"¥+? EOSFRESH indique que tout va bien, si l’agent est incapable de répondre vous obtiendrez STALE, il faut alors réessayer plus tard.
Le chiffre correspond à l’heure actuelle au format Posix. 26 est la taille du message renvoyé. Le contenu du fichier est compressé au format gzip (sans entête). EOS indique que vous pouvez continuer le dialogue.
La communication est loggé dans le répertoire logfiles de l’agent, le résultat de la communication précédente est le suivant :
[18:31:37.3060] 1100 ACCEPTED connection from 184.0.105.19, [sock fd= 424]
[18:31:37.3060] 3040 Created new Thread id: 3040 this will handle ip: 184.0.105.19
[18:31:42.4620] 3040 socket: 424 DATA: JOBLOG
[18:31:42.4620] 3040 socket fd = 424, -- request is: JOBLOG
[18:31:44.6180] 3040 socket: 424 DATA: ACE
[18:32:11.9780] 3040 socket: 424 DATA: %AUTOUSER%\out\toto
[18:32:14.6030] 3040 socket: 424 DATA: 1
[18:32:19.2900] 3040 socket: 424 DATA: OVERANDOUT
[18:32:19.2900] 3040 Expanded env var AUTOUSER to value C:\Autosys\H02\autouser
[18:32:19.2900] 3040 New logfile path is C:\Autosys\H02\autouser\out\toto
[18:32:22.3060] 3040 The loop count = 1, for thread id 3040, socket number 424On distingue les différents paramètres envoyés à l’agent et la manière dont celui ci résout la variable d’environnement pour retrouver le fichier.
Récupérer le log du demon
Pour récupérer le log du démon il faut dialoguer avec le RCS du serveur.
Les commandes snt un peut différentes :
L’action devient EPLOG
On indique toujours l’instance
On indique ensuite de lignes que l’on veut récupérer
Puis éventuellement la chaine de caractères que l’on veut trouver
et enfin l’OVERANDOUT
Le format renvoyé est le même que pour le job log.
Exemple :
EPLOG
ACE
100
OVERANDOUTL’agent journalise les informaitons suivantes :
[18:33:20.5710] 3040 socket: 424 DATA: EPLOG
[18:33:20.5710] 3040 socket fd = 424, -- request is: EPLOG
[18:33:24.4150] 3040 socket: 424 DATA: ACE
[18:33:29.9780] 3040 socket: 424 DATA: 100
[18:33:34.5090] 3040 socket: 424 DATA: OVERANDOUT
[18:33:34.5090] 3040 EPLOG request for instance: ACE lines = 100
[18:33:34.5090] 3040 Sending the eplogExecuter le JIL
Le RCS permet aussi d’exécuter un JIL sur l’agent, il est ainsi possible de créer, de modifier ou de supprimer des traitements à partir d’une machine qui ne dispose d’aucun exécutable autosys.
Par contre, il est impératif que les binaires soit sur la partie RCS car il ne fera ni plus ni moins qu’un appel à ces binaires.
Les paramètres doivent permettre de s’authentifier avec un compte :
L’action est JIL
On indique l’instance
Puis un utilisateur *
Le compte OS
Le mot de passe correspond qui correspond au compte OS
La machine ou le domaine
Le jil (en une seule ligne)
et enfin l’OVERANDOUT**
* L’utilisateur n’apparait ni dans le champ owner ni dans l’autotrack. ** La commande ’exit’
Exemple :
JIL
ACE
eric
autosys
{password}
domain
update_job: JOB1
job_type: c
command: echo test
machine: machine1
update_job: JOB2job_type: c
command: hostname
machine: machine1
exit
OVERANDOUTLes logs Unix sont plus parlants que les logs windows :
[10:21:35.2207] 1 ACCEPTED connection from 184.12.17.163, [sock fd= 6]
[10:21:35.6124] 16 socket fd = 6, -- request is: JIL
[10:21:35.6719] 16 os_user: auto_ACE and tmp_os_user:auto_ACE
[10:21:35.6725] 16 update_job: JOB1
[10:21:35.6726] 16 job_type: c
[10:21:35.6727] 16 command: echo test
[10:21:35.6728] 16 machine: machine1
[10:21:35.6729] 16 update_job: JOB2
[10:21:35.6729] 16 job_type: c
[10:21:35.6730] 16 command: hostname
[10:21:35.6731] 16 machine: machine1
[10:21:35.6732] 16 exit
[10:21:35.6733] 16 request_type:JIL,tmp_os_user:autosys, and os_user:autosys
[10:21:36.1370] 16 Jil exit status = 0
[10:21:36.1375] 16 Jil success, on sock 6 to Web Interface.
[10:21:36.1379] 16 Sent 14 bytes of exit code = 0 to socket 6
[10:21:36.1384] 16 Jil failed and sent 480 bytes of standard output to socket 6
[10:21:36.1387] 16 The loop count = 1, for thread id 16, socket number 6
[10:21:36.1388] 16 socket fd = 6, -- request is: OVERANDOUT
[10:21:36.2702] 16 Shutdown received... closing socket 6Modifier le calendrier
Le RCS peut modifier le calendrier en appelant directement l’autocal_asc, cette fonctionnalité est malheureusement limitée car il n’est pas possible d’afficher les dates et on ne peut pas utiliser les heures.
Pour l’affichage on pourra lister les dates par une requête SQL mais la non prise en compte des heures est plus génante.
Les paramètres seront les suivants :
l’action : CALENDAR_UPDATE
l’instance
le compte OS
le mot de passe
le nom du calendrier
l’offset (décalage par rapport à l’heure locale)
l’action à effectuer : A (pour ADD) ou D (pour Delete)
la liste des dates au format Posix (nombre de secondes depuis le 1 Janvier 1970)
OVERANDOUT pour terminer
Envoyer un évènement
Un évènement peut être envoyé à travers le RCS en exécutant l’utilitaire sendevent.
Les paramètres sont :
l’action : SENDEVENT
l’instance
le compte OS
le mot de passe
les arguments du sendevent
OVERANDOUT pour terminer
Si tout va bien, on obtient un Exit Code = 0, sinon il n’y a aucun message (il faut alors voir le log du RCS).
Exemple :
CALENDAR_UPDATE
ACE
autosys
password
ERIC
7200
A
1215511980
OVERANDOUTLa réponse est l’exit code de l’exécutable :
Exit Code = 0
EOSLe log permet de voir le fonctionnement :
un fichier temporaire est créé et sauvegardé dans le tmp du RCS
la date posix est décalé avec l’offset
elle est converti avec le format attendu par l’autocal_asc
le fichier temporaore est envoyé
[12:09:43.5288] 50 socket fd = 6, -- request is: CALENDAR_UPDATE
[12:13:19.6954] 50 Calendar_Update
[12:13:19.6955] 50 Instace = ACE
[12:13:19.6956] 50 User = autosys
[12:13:19.6957] 50 PW = ******
[12:13:19.6958] 50 Cal Name = ERIC
[12:13:19.6958] 50 Offset = 7200
[12:13:19.6959] 50 Cal Action = A
[12:13:19.6960] 50 Cal Dates = 1215511980
[12:13:19.6961] 50 Over and out? = OVERANDOUT
[12:13:19.6963] 50 Temp file for calendar items = /tmp/calIn50.tmp
[12:13:19.6965] 50 Entering while loop
[12:13:19.6966] 50 Date_token = 1215511980
[12:13:19.6967] 50 After atol conversion utc_tmp = 1215511980
[12:13:19.6968] 50 Calling timeConvert
[12:13:19.6971] 50 Writing the date to the temp file, date = 07/08/2008
[12:13:19.6972] 50 After fwrite
[12:13:19.6973] 50 Entered cal request function
[12:13:19.6974] 50 Got user handle ok
[12:13:19.6983] 50 Got autosys variable OK
[12:13:19.6984] 50 Command Line = /opt/autosys/autosys45/bin/autocal_asc
[12:13:20.0942] 50 Jil exit status = 0
[12:13:20.0947] 50 autocal_asc success, on sock 6 to user interface.
[12:13:20.0951] 50 Sent 14 bytes of exit code = 0 to socket 6
[12:13:20.0953] 50 Calendar return code = 1
[12:13:20.0954] 50 Successful completion of Calendar Request!
[12:13:20.0956] 50 The loop count = 4, for thread id 50, socket number 6
[12:13:20.0957] 50 socket fd = 6, -- request is: OVERANDOUTExemple :
SENDEVENT
ACE
autosys
password
-E SET_GLOBAL -G TEST=ERICLog du RCS :
[11:28:23.5728] 48 socket fd = 6, -- request is: SENDEVENT
[11:28:40.4396] 48 Jil exit status = 0
[11:28:40.4402] 48 sendevent success, on sock 6 to user interface.
[11:28:40.4406] 48 Sent 14 bytes of exit code = 0 to socket 6
[11:28:40.4408] 48 Successful completion of SendEvent Request!
[11:28:40.4410] 48 The loop count = 9, for thread id 48, socket number 6
[11:28:40.4411] 48 socket fd = 6, -- request is:
[11:28:40.4411] 48 Invalid request: ******
[11:28:40.4414] 48 The loop count = 10, for thread id 48, socket number 6
[11:28:40.4415] 48 Shutdown received... closing socket 6En cas d’erreur, la sortie est directement renvoyée au client :
SENDEVENT
ACE
autosys
password
-E SET_GLOBAL -G TEST=ERICExit Code = 1
The SET_GLOBAL syntax is:
-G Global=Value, or
Global=DELETE to Delete the Global.
EOSLe log du RCS sera alors le suivant :
[11:13:10.8770] 48 socket fd = 6, -- request is: SENDEVENT
[11:13:30.3662] 48 Jil exit status = 256
[11:13:30.3671] 48 sendevent failed and sent 14 bytes of exit code = 1 to socket 6
[11:13:30.3674] 48 sendevent failed and sent 89 bytes of standard output to socket 6
[11:13:30.3675] 48 Output from sendevent being sent to user interface: The SET_GLOBAL syntax is:
-G Global=Value, or
Global=DELETE to Delete the Global.
[11:13:30.3677] 48 SendEvent request failed
[11:13:30.3679] 48 The loop count = 4, for thread id 48, socket number 6Obtenir l’heure de l’agent
Cette fonctionnalité est très intéressante quand on dispose d’agent sur différents fuseaux horaires.
Les paramètres sont :
l’action : ASCLOCKTIME
l’instance
l’heure au format Posix (utiliser time0 pour les tests
OVERANDOUT
La réponse est un exit code suivi de l’heure au format de l’autocal_asc.
Exemple :
ASCLOCKTIME
ACE
1215511980
OVERANDOUT
Exit Code = 0
07/08/2008 12:13:00Vérifier un compte à distance
La vérification permet d’authentifier un compte sur la machine distante, ce compte est utilisé dans
CheckUser
/bin/CheckUserLogon.exe autosys password
OVERANDOUT
true
28
EOS[12:34:51.5166] 57 socket fd = 5, -- request is: CheckUser
[12:35:02.5515] 57 performing checkuser for user autosys
[12:35:04.3293] 57 Authorization is successful
[12:35:04.3294] 57 Checkuser passed for user autosys
[12:35:04.3298] 57 Exiting check user branch
[12:35:04.3300] 57 The loop count = 1, for thread id 57, socket number 5
[12:35:04.3301] 57 socket fd = 5, -- request is: OVERANDOUTMessage d’erreur si le mot de passe ne correspond pas au compte :
CheckUser
/bin/CheckUserLogon.exe autosys test
OVERANDOUT
false
-1
EOSLog RCS :
[12:36:54.6335] 57 socket fd = 5, -- request is: CheckUser
[12:37:02.2652] 57 performing checkuser for user autosys
[12:37:02.9151] 57 CheckUser -- Invalid password
[12:37:02.9153] 57 Checkuser Failed for user autosys
[12:37:02.9153] 57 OS_encrypt from check user passing = -1
[12:37:02.9154] 57 encrypt form get_encrypt() call = 49
[12:37:02.9158] 57 Exiting check user branch
[12:37:02.9160] 57 The loop count = 2, for thread id 57, socket number 5
[12:37:02.9160] 57 socket fd = 5, -- request is: OVERANDOUTVérifier un groupe
Un autre exécutable permet de vérifier l’appartenance d’un compte à un groupe.
CheckUser
/bin/CheckUserGroup.exe auto_ACE autosys
OVERANDOUT
EOSSi le compte appartient au groupe on n’obtient aucune réponse.
Log RCS :
[12:42:11.0450] 58 socket fd = 6, -- request is: CheckUser
[12:42:20.5044] 58 performing checkgroup 154 id2 = 154
[12:42:20.5045] 58 Checkgroup passed for user auto_ACE and autosys
[12:42:20.5047] 58 The loop count = 1, for thread id 58, socket number 6
[12:42:20.5048] 58 socket fd = 6, -- request is: OVERANDOUTPar contre, si le compte n’appartient pas au groupe, un false suivi d’un -1 est renvoyé.
CheckUser
CheckUserGroup.exe auto_ACE test
OVERANDOUT
false
-1
EOSLog RCS :
[12:42:33.1188] 58 socket fd = 6, -- request is: CheckUser
[12:42:42.1246] 58 performing checkuser for user auto_ACE
[12:42:42.1313] 58 CheckUser -- Invalid password
[12:42:42.1314] 58 Checkuser Failed for user auto_ACE
[12:42:42.1315] 58 OS_encrypt from check user passing = -1
[12:42:42.1316] 58 encrypt form get_encrypt() call = 82
[12:42:42.1319] 58 Exiting check user branch
[12:42:42.1320] 58 The loop count = 2, for thread id 58, socket number 6
[12:42:42.1321] 58 socket fd = 6, -- request is: OVERANDOUT Thèmes |
|---|
|










































Job-scheduling
Autosys
Sites connexes
TechRepublic.com : Autosys
Licence
Partenariat
Rechercher
Recherche globale
Annonces
Mots clés
Liens