, SSH Alternative à PUTTY

Vous cherchez un client SSH et vous avez commencé à toucher les limites de PUTTY ?

Nous en avons testé plusieurs et nous avons bien aimé smarTTY

L’interface est simple et épurée, vous avez les icônes avec les sites que vous avez définis

Vous pouvez utiliser une connexion existante ou définir une nouvelle connexion
il vous demandera les éléments classiques, vous pourrez ensuite passer à un échange de clés pour vous identifier.

Vous avez le choix entre 2 interfaces, j’ai préféré l’interface plus classique, les plus jeunes préféreront le « SMART »

Dans l’interface SMART vous pouvez par exemple éditer directement les fichiers …

Vous pouvez alors saisir vos commandes et travailler comme sur n’importe quelle interface .

Le petit plus que nous avons aimé

C’est le bouton SCP qui est une alternative à Filezilla pour les échanges simples


Vous choisissez le fichier à télécharger


Vous avez une fenêtre qui apparait pour indiquer l’avancement du téléchargement
Vous pouvez suspendre, fermer la fenêtre

Voila , comme on dit à Gaia c’est simple et efficace, vous pouvez le tester

Remarque :

Pour l’intégrer dans ACS vous devez modifier le fichier AcsConfig.properties

Attention de vérifier que vous utiliser bien le bon fichier de configuration plus d’informations ici

https://www.ibm.com/support/pages/node/667125

En résumé vous lancez à partir de ACSBUNDLE.jar vous devrez l’ouvrir et l’éditer manuellement.

, , , Contrôler le nombre de paramètres passés à un programme CL – %PARMS() / CEETSTA
presence_flagSortie*INTVariable de retour : 1 ou 0
arg_numEntrée*INTPosition de la variable à tester

Remarques

Le compte des paramètres pour la arg_num commence à 1
La valeur de retour est un *INT pas un *LGL

Pour plus de détails

Documentation IBM – %PARMS() : https://www.ibm.com/docs/en/i/7.5?topic=procedure-parms-built-in-function
Documentation IBM – CEETSTA : https://www.ibm.com/docs/api/v1/content/ssw_ibm_i_75/apis/CEETSTA.htm
, Surveillez l’état de vos bandes

Vous sauvegardez sur des bandes LTO, et vous voulez savoir si vos bandes sont en bon état,
pour en savoir plus sur les LTO : https://fr.wikipedia.org/wiki/Linear_Tape-Open

La durée de vie théorique d’une bande LTO est donnée pour 30 ans, mais elle dépend beaucoup des conditions d’utilisation et elles peuvent être défectueuses.
Certaines sociétés changent leurs bandes tous les 3 ans.

La bonne pratique c’est de le faire quand vous changez votre POWER en principe tous les 3 à 5 ans.

Mais il peut être important de contrôler l’état de vos supports pour éviter les mauvaises surprises.

Il n’existe pas de service SQL ni de sortie outfile pour l’instant.

Vous allez pouvoir faire une analyse par volume.

C’est vous qui indiquez le nom de volume quand vous formater votre support
INZTAP DEV(TAPXXX) NEWVOL(xxxxxx) vous disposez de 6 caractères

Exemple :
==>INZTAP DEV(TAP01) NEWVOL(LUNDI1) …

La commande qui va vous permettre d’analyser ces volumes est la commande PRTERRLOG
qui va vous générer un spool QPCSMPRT.

En principe vous avez un roulement de bande par semaine.

Vous pouvez contrôler le volume dans le lecteur avant de déclencher une sauvegarde, mais il n’est pas conseillé de la bloquer, vous pouvez remonter un message.

« * Attention bande du LUNDI trouvée dans le lecteur * »

Exemple

Vous devez connaitre le type de votre unité de bande pour utiliser cette commande.

==>DSPDEVD TAP01

==>PRTERRLOG TYPE(VOLSTAT) OUTPUT(PRINT)
VOLTYPE(3580)
VOLSTATTYP(*LIFETIME)

Si vous avez des erreurs il faut remplacer vos bandes.

Pour vous aider à automatiser cette remontée d’information, vous pouvez utiliser notre outil disponible ici :

https://github.com/Plberthoin/PLB/tree/master/SNDVOLSTAT

Remarque :

Il est important :
d’avoir un plan de reprise d’activité suite à un crash
de tester une restauration partielle de temps en temps
de passer la cartouche de nettoyage tous les 6 mois

, Connaitre la taille vos MTI

Vous désirez connaitre la taille occupée par les MTI (Maintained Temporary Index) sur votre machine, voici une Méthode.
Vous avez des buckets (espaces dans votre mémoire centrale) sur votre partition.

Vous avez un service QSYS2.SYSTMPSTG qui permet de voir ces buckets

La taille des MTI, c’est le bucket 14

Voici la requête pour voir cette taille

SQL SELECT CURRENT TIMESTAMP AS date_heure,
BUCKET_NUMBER,
GLOBAL_BUCKET_NAME,
BUCKET_CURRENT_SIZE,
BUCKET_LIMIT_SIZE
FROM QSYS2.SYSTMPSTG
WHERE bucket_number = 14

Pour diminuer cette taille il faut créer les index qu’Index advisor vous suggère.

Vous avez une fonction table qui vous indique les MTIs de votre système, QSYS2.MTI_INFO

Ceux qui concernent votre base de données doivent être construits

Ici ceux utilisés depuis une semaine sur la bibliothèque exploit !

SELECT *
FROM TABLE (
QSYS2.MTI_INFO(‘EXPLOIT’, ‘*ALL’)
)
WHERE LAST_BUILD_START_TIME > CURRENT DATE – 7 DAYS

Remarque :

Cet espace sera réutilisé par les autres Buckets

Vous pouvez faire un suivi de ces buckets , par exemple ceux de la base de données pour voir les grandes variations

La mise à jour du fichier d’index Advisor dépendra de la méthode utilisée pour générer l’index, n’hésitez pas à effacer des enregistrements dans le fichier QSYS2.SYSIXADV.

, , Générer un XLS avec SQL

La TR 3 de la V7R5 nous apporte un nouveau service qui va permettre de générer un fichier XLS à partir d’une requête SQL

Exemple :

VALUES SYSTOOLS.GENERATE_SPREADSHEET(
PATH_NAME => ‘LST_option.xls’,
SPREADSHEET_QUERY => ‘Select * from qgpl.qauoopt’ ,
COLUMN_HEADINGS => ‘COLUMN’ ,
SPREADSHEET_TYPE => ‘xlsx’)

Remarque:

ACS doit être installé sur votre partition et si possible à jour

Attention par défaut il génère du csv

, Analyse CPF1164

La TR3 de la V7R5, nous apporte une nouvelle fonction table qui va nous permettre d’analyser plus finement et surtout plus simplement la fin d’un travail, soit en réalité le message CPF1164, en effet on a accès directement au code secondaire .

Exemple :

SELECT FROM_JOB,
JOB_END_CODE,
JOB_END_DETAIL,
SECONDARY_ENDING_CODE,
SECONDARY_ENDING_CODE_DETAIL
FROM TABLE (
SYSTOOLS.ENDED_JOB_INFO()
)
WHERE JOB_END_CODE > 10

Remarque :


Par défaut il analyse la veille soit (current date – 1)

, Comprendre comment un travail interactif est affecté à un sous système.

C’est des entrées écran qui peuvent être indiquées sur des sous systèmes, par les commandes ADDWSE et CHGWSE.

Il va utiliser le nom de l’unité écran, il va faire la recherche dans cet ordre :

-Par nom
-par nom générique
-*all

Vous avez un service SQL qui permet de les visualiser QSYS2.WORKSTATION_INFO

Voici une requête qui permet de voir et comprendre les entrées de votre système

SELECT A.SUBSYSTEM_DESCRIPTION_LIBRARY, A.SUBSYSTEM_DESCRIPTION, WORKSTATION_NAME 
  FROM QSYS2.WORKSTATION_INFO as A Join  QSYS2.SUBSYSTEM_INFO AS B
  on A.SUBSYSTEM_DESCRIPTION_LIBRARY= b.SUBSYSTEM_DESCRIPTION_LIBRARY and
  A.SUBSYSTEM_DESCRIPTION = b.SUBSYSTEM_DESCRIPTION
  and B.STATUS = 'ACTIVE' and ALLOCATION = '*SIGNON'
  where WORKSTATION_NAME not like('%*%') 
 union
 SELECT A.SUBSYSTEM_DESCRIPTION_LIBRARY, A.SUBSYSTEM_DESCRIPTION, WORKSTATION_NAME 
  FROM QSYS2.WORKSTATION_INFO as A Join  QSYS2.SUBSYSTEM_INFO AS B
  on A.SUBSYSTEM_DESCRIPTION_LIBRARY= b.SUBSYSTEM_DESCRIPTION_LIBRARY and
  A.SUBSYSTEM_DESCRIPTION = b.SUBSYSTEM_DESCRIPTION
  and B.STATUS = 'ACTIVE' and ALLOCATION = '*SIGNON'
  where WORKSTATION_NAME like('%*%')  
 union
 SELECT A.SUBSYSTEM_DESCRIPTION_LIBRARY, A.SUBSYSTEM_DESCRIPTION, WORKSTATION_TYPE 
  FROM QSYS2.WORKSTATION_INFO as A Join  QSYS2.SUBSYSTEM_INFO AS B
  on A.SUBSYSTEM_DESCRIPTION_LIBRARY= b.SUBSYSTEM_DESCRIPTION_LIBRARY and
  A.SUBSYSTEM_DESCRIPTION = b.SUBSYSTEM_DESCRIPTION
  and B.STATUS = 'ACTIVE' and ALLOCATION = '*SIGNON'
  where WORKSTATION_TYPE = '*ALL' 

En principe ca représentera l’ordre de recherche dans votre #ibmi

Remarque :

Quand 2 entrées sont démarrés avec le même critère c’est le premier qui est pris en compte
Ici les entrées QPADEV* entrerons dans QINTER
On peut également faire des entrées par type les 2 principaux sont
IBM-3477-FC 132
IBM-3179-2 80
https://www.rfc-editor.org/rfc/rfc1205
Mais à éviter pas simple à gérer

, , Utiliser un SFL d’erreurs

C’est la possibilité d’avoir plusieurs messages d’erreur et de pouvoir paginer dessus

Vous pouvez programmer un sous fichier message, mais ca peut être un peu compliqué à réaliser.

Voici une solution simple, il suffit de mettre le mot clé ERRSFL au niveau fichier écran

Ci dessous un exemple avec son programme en CLLE

DSPF

     A* Exemple sous fichier d'erreurs
     A                                      DSPSIZ(24 80 *DS3)         
     A                                      ERRSFL                     
     A                                      CA03(03)                   
     A          R FMT01                                                
     A            ZONE1         10A  B 11 20                           
     A  41                                  ERRMSG('Erreur ZONE 1' 41) 
     A            ZONE2         10A  B 12 20                           
     A  42                                  ERRMSG('Erreur ZONE 2' 42) 
     A            ZONE3         10A  B 13 20                           
     A  43                                  ERRMSG('Erreur ZONE 3' 43) 
     A                                  6  8'Sous fichier d''erreur'   
     A                                      DSPATR(HI)                 
     A                                 11  8'Zone 1 :'                 
     A                                 12  8'Zone 2 :'                 
     A                                 13  8'Zone 3 :'                                                         

CLLE

/* Exemple sous fichier message d'erreur */       
PGM                                               
DCLF ERREUR                                       
dountil &in03                                     
             SNDRCVF    RCDFMT(FMT01)             
             IF         COND(*NOT &IN03) THEN(DO) 
 /* activation des indicateurs d'erreur */        
             CHGVAR &IN41 '1'                     
             CHGVAR &IN42 '1'                     
             CHGVAR &IN43 '1'                     
enddo                                             
enddo                                             
ENDPGM                                            

Remarque:

La seule limitation, c’est une seule erreur par zone, mais ca suffit dans 90 % des cas

, Produits sous licence : IBM simplifie !

Dans la suite logique des annonces de la disponibilité de l’IBM i en mode abonnement pour les Power9 et Power10, IBM continue le déplacement des licences de l’offre perpétuelle à l’offre abonnement. Tout le détail ici https://www.ibm.com/docs/en/announcements/i-operating-system-now-offers-subscription-licensing-all-software-tiers-power9-power10-processors.

Bien entendu cela favorise la capacité à proposer des offres Cloud !

De ce point de vue c’est une opportunité importante dans la modernisation des infrastructures, et surtout la perspective d’avoir à terme un parc (plus) à jour.

D’autres raisons peuvent être sous-jacentes : la capacité à planifier et prédire un chiffre d’affaire par exemple. Du côté du client cela impacté également les budgets IT (amortissement vs consommation). Laissons cela de côté pour l’instant.

Comment

En synthèse, IBM travaille sur la proposition d’un abonnement IBM i + SWMA (maintenance logicielle). Le parti-pris est une équivalence de budget à 4 ans.

Cf https://www.itjungle.com/2023/09/18/the-subscription-pricing-for-the-ibm-i-stack-so-far/

Ainsi, si vous conservez vos machines 4 ans ou moins : pas de budget supplémentaire. Si vous conservez vos systèmes plus longtemps, le coût augmente. De même, il deviendra difficile de conserver des systèmes hors maintenance (mais quel intérêt ?).

D’un autre côté, IBM rend gratuit un grand nombre de produits sous licence : pour les clients les utilisant c’est également une source d’économie. Pour les autres, c’est l’opportunité de disposer de fonctions supplémentaires.

Logiciels sous licence désormais inclus avec la licence IBM i

  • Administration Runtime Expert, also called Application Runtime Expert (5733-ARE)
  • CICS Transaction Server (5770-DFH)
  • HTTP Server (5770-DG1)
  • Facsimile Support for i (5798-FAX)
  • Developer Kit for Java (5770-JV1)
  • Managed System Services (5770-MG1)
  • Network Authentication Enablement (5770-NAE)
  • System Manager (5770-SM1)
  • TCP/IP Connectivity Utilities (5770-TC1)
  • Transform Services (5770-TS1)
  • Universal Manageability Enablement (5770-UME)

Logiciels sous licence gratuit (à commander à part)

  • Web Enablement: includes selected versions of WebSphere Application Server (5733-WE3, 5722-WE2)
  • Cryptographic Device Manager (5733-CY3)
  • OmniFind Text Search Server for DB2 for I (5733-OMF)

Logiciels sous licence payants

  • BRMS (5770-BR1)
  • Rational Development Studio (5770-WDS)
  • PowerHA SystemMirror for i (5770-HAS)
  • Cloud Storage Solutions (5733-ICC)
  • Db2 Mirror (5770-DBM)
  • Rational Developer for i
  • ARCAD Observer for IBM i (5733-AO1)
  • ARCAD RPG Converter for IBM i (5733-AC1)
  • IBM i Modernization Engine for Lifecycle Integration (“Merlin” via Passport Advantage)
  • IBM i Optional Features: Db2 Data Mirroring – Opt 48

Retrouver les détails chez IBM : https://www.ibm.com/docs/en/announcements/continues-simplify-i-portfolio-licensed-software-withdrawal-selected-i-lpps-i-optional-features?region=EMEA

Cas de DB2 Web Query

Une nouvelle plus surprenant : fin de la commercialisation de DB2 Web Query depuis le 10 octobre 2023 ! Cf https://www.ibm.com/docs/en/announcements/db2-webquery-eom

Alors même qu’une nouvelle version est disponible depuis fin 2022 : https://www.ibm.com/docs/en/announcements/db2-web-query-i-24

DB2 Web Query a en réalité été initialement développé par Information Builders sous le nom WebFOCUS. En 2020, il a été racheté par TIBCO (https://www.tibco.com/press-releases/2021/tibco-completes-acquisition-information-builders). Il semble donc que la relation commerciale entre IBM et TIBCO ne permette plus cette participation.

Malheureusement, ce sont les utilisateurs de DB2 Web Query qui en pâtissent, IBM ne proposant pas de produit aux fonctionnalités équivalentes.

Ce sera également un manque aux possibilités de l’IBM i : DB2 Web Query est la solution de BI, d’exploitation des données métier. Or les plus fortes valeurs ajoutées de l’IBM i sont aujourd’hui sa base de donnée DB2 et la capacité à traiter des workload business.

Même si le nombre d’utilisateurs de DB2 Web Query était limitée, c’est assurément une mauvaise nouvelle.

, , , Effacer la log de votre travail

Vous faites le l’administration, le plus souvent en 5250 sous l’écran de commandes IBMI
==> call QCMD

Vous voulez effacer la log que vous voyez par la commande DSPJOBLOG.

La première solution consiste à vous déconnecter, du coup la log est effacée ou transformée en spool.

Cette méthode efface tout le contexte mis en place, liste de bibliothèques , variables d’environnement, objets dans QTEMP que vous avez peut être mis beaucoup de temps à construire dans vos tests.

L’idée c’est d’avoir une solution moins radicale qui permette de n’effacer que la log de votre travail, c’est pourquoi vous devriez avoir dans vos tools un outil comme celui la

Une commande qu’on a appelé astucieusement CLRLOG que vous pouvez trouver ici

https://github.com/Plberthoin/PLB/tree/master/CLRLOG

Comme le code est simple on le remet ici

On utilise la commande RMVMSG qui n’est utilisable que dans un programme CLLE

Le programme en CLLE

 PGM /*------------------------------------*/        
 /* Supprime les messages de votre log     */        
 /* Ne supprime pas les messages *PGMQ     */        
 /*----------------------------------------*/        
              RMVMSG     PGMQ(*ALLINACT) CLEAR(*ALL) 
              RMVMSG     PGMQ(*EXT) CLEAR(*ALL)      
 ENDPGM                                              

La commande

 /* Supprime les messages de votre log     */ 
CMD        PROMPT('Clearer la log de votre job') 

Remarque :

Cette commande n’efface pas les messages de type *PGMQ