pause-café
destinée aux informaticiens sur plateforme IBM i.
Pause-café #80
Nouveautés récentes
ACS
Juin 2018 (1.1.8 )
Attention, cette version impose Java 8 !
la version 1.1.8.1 admet java 8 , 9 , 10 et maintenant 11 (seules les versions 8 et 11 sont stables)
vous pouvez utiliser OpenJ9 d'Eclipse basé sur OpenJDK
(les mise à jour de Java ©Oracle) devenant payantes à partir de Janvier 2019.
téléchargez le JDK sur : https://www.eclipse.org/openj9/
Dézippez le fichier Zip dans \Program files\java\votre-version (dans nos exemples OpenJDK8)
Allez dans Paramètres système avancés
- Windows 7 : panneau de config./système/paramètres système avancés
- Windows 8/ 10 : recherchez "paramètres système avancés"
- modifiez la variable d'environnement PATH, pour ajouter devant C:\Program files\java\openJDK8\bin;
- ajouter la variable JAVA_HOME avec C:\Program files\java\openJDK8\
Associez cette version de java aux fichiers .jar, par (en mode commande) :- assoc .jar jarfile
- ftype jarfile="C:\Program files\java\OpenJDK8\bin\javaw.exe" -jar "%1" %*
Vérifiez
- Lancez ACS par un fichier .bat ou en cliquant sur acsbundle.jar
Revenons à la version 1.1.8 : nouvelle option propriété sur les fichiers de l'IFS
De nombreuses options "Database"
- Schéma
- Choix de la convention d'appellation
Edition/préférence
Gestion des transactions (comme WRKCMTDFN)
Nouvelle option propriété sur les tables
Gestion des verrouillages (objets et enregistrements) sur une table
Ainsi qu'un accès direct aux postes du journal
- SQL performances Center
Accès au détail SQL pour un travail (déjà présent dans l'option Schéma/Actions)
Toutes les colonnes sont désormais critère de tri
Novembre 2018 (1.1.8.1 )
- variable dans le titre et les pieds de page des impressions de session 5250
- &D : date du jour
- &T : l'heure
- &P : N° de page
- &N : retour chariot
- && : le &
- Possibilité de désactiver la bufferisation clavier
- Performances Center
- Edition/Inclusion permet de filtrer les moniteurs
Sur le nom
Sur la date
Fichier/Nouveau propose une connexion à un autre système
- Option Schéma
- Choix de l'ASP et du système, lors de la création de schéma
- Modification possible des Alias , des droit sur les lignes, des masques de colonne (RCAC)
- Les meilleures évolutions sont dans le gestionnaire de scripts SQL
- Mise en place de la position des colonnes
clic droit sur le résultat/Colonnes ou Drag&Drop à la souris- Choix des entêtes (nom et/ou Label)
- Il est plus simple de positionner le curseur dans une colonne pour copier la donnée
- si vous indiquez que la requête est "for update", les données sont modifiables
- Rappel
- Vous pouvez lancer directement une fonction par /plugin , par exemple
- start javaw -jar <chemin>\acsbundle.jar /PLUGIN=ifs /system=as400
- start javaw -jar <chemin>\acsbundle.jar /PLUGIN=splf /system=as400
- start javaw -jar <chemin>\acsbundle.jar /PLUGIN=DB2TOOLS /system=as400 (perf.Center)
- start javaw -jar <chemin>\acsbundle.jar /PLUGIN=DB2 /system=as400 (Schémas)
- start javaw -jar <chemin>\acsbundle.jar /PLUGIN=rss /system=as400 (Scripts SQL)
- Vous pouvez lancer ACS depuis une page web, sur l'IBM i :
- Créez un certificat , par
keytool -genkeypair -alias acsbundle.cer -keypass certpassword -validity 730
-keystore acsbundle -storepass storepassword- créez une nouvelle version du fichier .jar signée
jarsigner -keystore /javakeystore/acsbundle.cer -storepass storepassword -keypass
certpassword -signedjar acs.jar acsbundle.jar acsbundle- Créez un fichier .jnlp, par exemple
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0" codebase="http://votre-serveur-web/acs">
<information>
<title>IBM i Access Client Solutions (Production Version 1.1)</title>
<vendor>SOCIETE</vendor>
<offline-allowed/>
</information>
<resources>
<jar href="acs.jar"/>
<j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"
max-heap-size="1g" java-vm-args="-Djava.security.manager=none"/>
</resources>
<application-desc main-class="com.ibm.iaccess.launch.AcsLaunchPad">
<argument> /PLUGIN=5250</argument><argument> /SYSTEM=AS400</argument>
<argument> /wsid=&COMPN*=</argument>
<argument> /wide</argument>
<argument> /nosave</argument>
</application>
<security>
<all-permissions/>
</security>
</jnlp>- Ajoutez le directive AddType application/x-java-jnlp-file .jnlp à httpd.conf
- Vous verrez
et, si vous acceptez, directement votre émulateur
TR5 (certaines fonctions sont communes à la TR9 de la 7.2)
- Nouvelle option d'ACS : Outils/Open Source Package Managment (en fait YUM, voir ci-dessous)
- Autres nouveautés :
- JTOPEN, le driver JDBC supporte la connexion à un serveur de secours, si le lien principal tombe
- le compilateur SQLRPGLE sera plus "bavard" quand une variable ou une DS n'est pas utilisable dans une instruction SQL
Messages modifiées
SQL0312 Reason: The variable is a dimensioned array.
SQL0312 Reason: The host structure is a dimensioned array.
SQL0312 Reason: No declaration for the variable exists, the declaration is not within the current scope,
or the variable does not have an equivalent SQL data type.SQL0312 Reason: A member of the host structure is a result set locator.
SQL0312 Reason: A member of the host structure is dimensioned.
SQL0312 Reason: A member of the host structure does not have an equivalent SQL data type.
- quelques nouveautés DB2
- Nom de correllation facultatif avec les fonctions table
ici "as t" devient optionnel
- fonctions et services amméliorés (voir les détails)
- par exemple NOW() admet maintenant une précision (entre 0 et 12) sur le timestamp en cours
- VARCHAR_FORMAT (ou TO_CHAR) qui transforme (avec beaucoup de puissance)
- caractère vers varchar
- numérique vers varchar
(voir http://www.volubis.fr/forum/viewtopic.php?t=757)- Timestamp vers varchar
- dans ce dernier cas, ont été ajoutés
- Ms pour millisecondes
- Us pour microsecondes
- EXTRACT (qui extrait une partie d'une date) admet plus d'options, dont :
- EPOCH retourne le nbr de secondes depuis 1970-01-01 00:00:00.00
- MILLENNIUM retoune le millénaire (2 pour 2018)
- CENTURY retourne le siécle (20 pour 2018)
- DECADE retourne le nombre de décades (201 pour 2018)
- WEEK le n° de semaine
- DOW le jour de la semaine (1=Dimanche)
- DOY le jour dans l'année
- nouvelle vue JOB_DESCRIPTION_INFO retournant des infos sur une JOBD
- nouvelle vue OUPUT_QUEUE_ENTRIES_BASIC retournant des infos sur tous le spools du système
- nouvelle procédure Omnifind SYSTS_SEARCH_RETURN_TO_CALLER pour faire des recherches dans l'IFS par PGM
il existait déjà une procédure SEARCH, que nous utilisons ici
mais celle-ci rend plus simple l'utilisation du result sets par une procédure SQL (voir l'exemple sur developerWorks)- RDI 9.6.0.2
- la vue Table évolue pour ressembler un peu plus à PDM
Affichage de la partie saisie de critères
La 2ème nouvelle icone permet de placer la partie Saisie des critèresà gauche de la fenêtre
Remarquez que vous pouvez saisir :
• des critères "à la PDM"
• mais aussi réutiliser vos filtres RSE
D'ailleurs vos critères peuvent être sauvegardés en tant que filtre
et vous les retrouverez dans la partie arborescente
Une fois vos critères renseignés, voici ce que vous verrez, notez la zone Option, qui fonctionne comme PDM
Y compris l'option 12 qui descend du niveau biliothèque aux objets, du niveau fichier source aux membres.
Open source et IBM i
Pourquoi utiliser des produits Open source
- Gratuité
- Multitude d'applications et d’outils
- Évolutions permanentes
- Nombreuses communautés
- Plus facilité pour trouver des compétences
- Standards de fait,
- Et puis, vous avez les sources !
- Open source Sur IBM i
- Robustesse de la plateforme
- Ouverture de la plateforme
- Intégration (fourni par IBM, souvent du vrai 64 bits pour Power)
A l'origine était PASE
En standard en 5.2, facturable avant
PASE, c’est AIX sur IBM i
pour lancer un "shell" PASE :
> CALL QP2TERM (pour une saisie utilisateur)
> CALL QP2SHELL (pour exécuter un script)
> l'API Qp2RunPase, pour lancer Pase depuis un pgm ILE.
+ le répertoire de PASE est /QOpenSys/usr/binPuis vint la version packagée de ZEND, Ruby on Rails et 5733SC1.
5733SC1 - IBM portable utilities for i
The 5733-SC1 LPO contains the OpenSSH, OpenSSL and zlib open source packages …
Openssl genrsa → pour générer des certificats
Openssl smime → pour crypter/décrypter des fichiers
Ssh-keygen : génère un couple de clé privée/publique
Après échange des clés vous pouvez vous connecter automatiquement
si le démon ssh est démarré (STRTCPSVR *SSHD)
vous pourrez vous connecter depuis Putty (par exemple)
Attention, ssh par défaut travaille avec des id Utilisateur sur 8c. maxi.
•pour accepter des profils sur 10, ajoutez ibmpaseforienv PASE_USRGRP_LIMITED=N
dans /QOpenSys/QIBM/UserData/SC1/OpenSSH/etc/sshd_config
voir http://www-01.ibm.com/support/docview.wss?uid=nas8N1011847
Si vous ne souhaitez pas saisir de mot de passe :
Générez une clé avec puTTYgen
Sauvegardez la clé Privée au format Putty (.ppk)
puis, soit :
- vous sauvegardez le contenu de la fenêtre Public key for pasting... et vous la transférez dans /home/nom-de-user/.ssh/authorized_keys
- soit vous placez, par un éditeur (RDI, Winscp ?) , le contenu de cette fenêtre dans le fichier vu au dessus
Attribuez les droits sur /home/nom-de-user et /home/nom-de-user/.ssh à 704 par chmod
Vérifiez aussi les droits sur authorized_keys
(attention, pas assez ou trop de droits provoque "server refused our key" )
Configurez la connexion comme ceci :
la clé chargée c'est la clé privée, générée par puTTYgen
La même configuration peut être utilisée sous putty pour lancer un shell
puis sauvegardée.
pour pouvoir être ré-utilisée directement depuis ACS
Configurez AcsConfig.properties comme ceci :
ET voilà
Tomcat peut être téléchargé et utilisé sur IBM i
vous pouvez éditer le port (dft = 8080) dans ce fichier : server.xml
vous devez éditer l'utilisateur autorisé à ce connecter, dans ce fichier : tomcat-user.xml
Lancez par startup.sh (shutdown.sh arrête le serveur)
si vous souhaitez passer par Apache, qui redirigera vers Tomcat , il vous faut QHTTPSVR/QZTCJK (dans QHTTPSVR)
et quelques lignes de config dans votre fichier httpd.conf
puis créer workers.properties
Pour plus de détails voyez https://www.ibm.com/developerworks/ibmi/library/i-websolution-asf-tomcat/index.html
Puis vint 5733OPS
Node.JS
livré avec un connecteur DB2
remarquez db.conn qui se fait sur le nom de DataBase (celui indiqué par WRKRDBDIRE) ou *LOCAL
Résultat (ici sous PuTTY)
Python
- Accès à la base de données (Vérifiez que vous avez SI58191)
Résultat
Tools
rsync
- les utilitaires zip/unzip se trouvent dans /QOpenSys/QIBM/ProdData/OPS/tools/bin/
ils fonctionnent comme cela :
le fichier résultat est lisible par Windows, 7zip ET IBM i (cde CPYFRMARCF)
bash, cela permet d'utiliser ce Shell plutôt que celui fourni en standard par QP2TERM qui est plutôt un Korn Shell
(les spécialistes Unix/Linux apprécierons)
il est situé dans le même répertoire
Pour le lancer
- Sous QP2TERM
- En automatique
echo 'exec /QOpenSys/QIBM/ProdData/OPS/tools/bin/bash' >> .profile
- Gzip
- PERL
- wget
curl (disponible sur IBMi avec 5770OPS et SI63905)
abréviation de client URL request library :
cette commande :
- Supporte les protocoles http, smb(voisinage réseau), ftp, sftp, smtp, telnet, etc....
- Permet de créer ou modifier une ressource (contrairement à wget), elle peut ainsi être utilisé en tant que client REST.
Pour obtenir l'entête d'une page :
Pour tester un web service par GET
(ici 404 , Not found)
Pour tester un web service par POST
curl -i -H "Content-Type: application/json" -X POST
-d '{"NOM":"Volubis", "VILLE":"Carquefou", "TEL":"02 40 30 00 70" , "FAX":"02 40 30 39 22", "APPEL_CODE":13}'
http://as400:10025/web/services/Producteur
(remarquez le retour avec Location: )
Voyez un manuel d'utilisation ici
Ce protocole de mise à jour à distance , permet de ne transférer que la différence entre deux jeux de fichiers à travers le réseau, en utilisant un algorithme de recherche de somme de contrôle.
Ce protocole établit ses connexions sur le port TCP 873.
La synchronisation fonctionne selon deux modalités :
- en mode local : où le programme client se charge de comparer les deux versions des répertoires et effectuer la synchronisation ;
- en mode distant : le programme client contacte le programme serveur, habituellement grâce au protocole SSH, ce qui permet une communication sécurisée
Copie locale du contenu d'un répertoire
L'option a (archive) préserve
- les liens symboliques
- les droits
- les timestamp (création/mdofication,...)
- les propriétaires
Mode verbeux
Avec un serveur en utilisant SSH
Avec compression et récursivité (arborescence complète)
- SQlite3 est la seule base de données Serverless (sans démon)
la base étant créé, passez vos ordres SQL ensuite
la documentation est là : https://www.sqlite.org/docs.html
- GIT
Il s'agit d'un produit de gestion de version décentralisé ou Version Control System (VCS en angl. ), voir la définition Wikipedia
Il est accessible en mode Web, par exemple GitHub ou bitBucket.org (Voyez sur ce site notre projet gratuit SU)
Une fois le produit installé vous devez trouver cette arborescence
Vous pouvez, désormais, utiliser le produit en mode commande -> voir la documentation en Français (PDF)
Pour paramétrer git configAprès avoir créé un fichier README.MD, ajoutons le au repository et commitons
Encore une fois, la doc détaillée est ici : https://progit2.s3.amazonaws.com/fr/2016-03-05-4c838/progit-fr.1062.pdf
Avec SI63134, qui apporte CURL , nous pouvons cloner un dépot depuis le webpar exemple : git -c http.sslverify= false http://github.com/OSSILE/OSSILE
résultat
Mais si nous préférerons l'utilisation de git directement depuis RDI, allez chercher le PlugIn RDI "EGit"
Pour l'installer Aide/Eclipse MarketPlace
- ORION
Il s'agit d'un projet Eclipse contenant un éditeur de source (en mode Web) doublé d'un client Git.
- Pour démarrer le serveur QSH CMD('/QOpenSys/QIBM/ProdData/OPS/Orion/orion')
- Pour l'arrêter QSH CMD('/QOpenSys/QIBM/ProdData/OPS/Orion/StopOrion')
Ce dernier est lancé dans QHTTPSVR et utilise le port 2025 :
les deux fichiers de config, sont
- /QOpenSys/QIBM/UserData/OPS/Orion/orion.ini
- /QOpenSys/QIBM/UserData/OPS/Orion/orion.conf
A la première utilisation vous verrez
- Try it now permet de s'enregistrer
- Sign In (en haut à droite), permet de s'authentifier ensuite
- Vous pouvez aussi, dans orion.conf
- Créer l'utilisateur admin et lui attribuer un mot de passe, par orion.auth.admin.default.password=unmotdepasse
Arrêtez, redémarrer Orion
Signez vous admin, changez le mot de passe
Enlevez la ligne orion.auth.admin.default.password dans orion.conf, elle ne sert plus.
- Indiquez que seul admin peut créer des utilisateurs, par orion.auth.user.creation=admin
- Voyez cet exemple complet de config https://github.com/fabric8io/fabric8-eclipse-orion/blob/master/orion.conf
- Vous pouvez ensuite
- Créer un projet
- Basic (Local => dans le workspace)
(dans notre exemple , mesSources)
Ensuite créez des fichiers dans ce projet (par exemple RPG, qui est un langage reconnu, comme html, js et CSS)
Nginx, Serveur HTTP, souvent utilisé pour faire du reverse proxy
Un exemple est fourni dans /QOpenSys/QIBM/ProdData/OPS/tools/conf/nginx.conf , copiez le et créez le votre.
Pour démarrer :
/QOpenSys/QIBM/ProdData/OPS/tools/bin/nginx -c <path_to_nginx.conf>Pour arrêter :
/QOpenSys/QIBM/ProdData/OPS/tools/bin/nginx -c <path_to_nginx.conf> -s stopExemple
avec
Démarrage
Résultat
Sinon, voyez ce tutoriel https://bitbucket.org/ibmi/opensource/src/master/docs/nginx.md?fileviewer=file-view-default
- Vous pouvez obtenir de nouveaux produits Open Source sous forme de RPM
- Lancez (par le gestionnaire de scripts SQL) bootstrap.sql si votre serveur IBMi à accès à Internet
ftp://public.dhe.ibm.com/software/ibmi/products/pase/rpms/bootstrap.sql
- Sinon
- téléchargez
- Transférer ces fichiers dans la répertoire /tmp (en binaire)
- passez la commande :
QSH CMD('touch -C 819 /tmp/bootstrap.log; /QOpenSys/usr/bin/ksh /tmp/bootstrap.sh > /tmp/bootstrap.log 2>&1')- Sous QOpenSys/pkgs/bin
- yum list installed, liste les package installés
- yum list available, liste les package disponibles
- yum list all, liste tous les packages
- puis
- yum install <package>
- yum remove <package>
- yum search <package>
L'utilisation de cet utilitaire et la recherche de dépots est désomais intégré à ACS version 1.1.8
L'installation de YUM aussi
D'ailleurs YUM permet d'installer de nouveaux utilitaires,
(ils sont tous placés dans QOpenSys/pkgs/bin)
comme, par exemple :
- lftp (voir http://momh.fr/tutos/Linux/lftp)
Transfert de fichier en mode commande utilisant ftp, sftp, http, et d'autres
Pour utiliser un protocole particulier, indiquez le dans l'URL
- updatedb et locate
permettant de retouver rapidement un fichier
- updatedb créé une base de données contenant l'ensemble des fichiers du système (basé sur find)
(les erreurs concernent des fichiers "lockés" ou des nom de répertoire en Unicode)
plus de 1 heure sur notre système la première fois, 20 Mn ensuite.
D'ailleur, nous avons inséré ce CL dans nos travaux planifiés
- locate un-nom permet ensuite de retrouver rapidement un fichier
Pour les objets de QSYS, tapez bien le nom en MAJSUCULES
- sed (voir https://fr.wikipedia.org/wiki/Stream_Editor)
- vim (basé sur VI, assez peu convivial)
- ou nano (basé sur Pico, voyez https://fr.wikipedia.org/wiki/GNU_nano )
Aide (Ctrl+G)
Téléchargez le (si besoin) depuis ACS
puis lancez le, depuis Putty (pas sur un terminal 5250, qui n'est pas reconnu)
- Pour éditer un fichier
C'est un éditeur pleine page
Ctrl+O (Write Out)
Recherche (Ctrl+W)
Sortie (Ctrl+X)
- Enfin Midnight Commander, gestionnaire de fichier en mode commande
- un conseil ajoutez ces lignes
PATH : permet d'avoir /QopenSys/pkgs/bin dans les répertoires par défaut
LC_ALL de préciser le code page (Français dans notre exemple)
dans :
- /QOpensys/etc/profile : elles impactent tout le monde
- /HOME/<user>/.profile : elles impactent <USER>
- Le menu peut être utilisé à la souris
ici, le menu option, permettant de changer la configuration et l'apparence
- Les menus Left et Right permet de choisir ce qui doit être affiché (à Gauche/à Droite)
par exemple un site FTP
- YUM
- Vous pouvez même déclarer des repository supplémentaires en ajoutant un fichier .repo dans /QOpenSys/etc/yum/repos.d
(voir https://bitbucket.org/ibmi/opensource/src/7d5f5987793bbffac8472f3123f60c6560075186/docs/yum/3RD_PARTY_REPOS.md)
- http://www.the-i-doctor.com propose une installation de lynx (navigateur web en mode texte)
- Celui-ci www.qseco.fr permet une installation de Mono (moteur .net en mode Opensource)
D'ailleurs voyez les exemples de clients utilisant le modèle open sources, donnés par Jesse Gorzinski
http://ibmsystemsmag.com/blogs/open-your-i/november-2018/three-ways-open-source-brings-business-value/?platform=hootsuite
Mais le modèle Opensource étant contributif, il s'agit de prendre mais aussi de donner
N'hésitez à contribuer sur https://github.com/FrenchIBMi avec les clubs IPL, Bretagne et Common France.