, Ménage dans l’IFS

Vous devez surveiller l’IFS de votre partition et plus particulièrement la partie /home/ ou vous retrouvez les fichiers générés par vos utilisateurs et y faire le ménage régulièrement est une bonne pratique.

Une épuration à 30 jours semble un bon compromis

Voici 2 techniques pour réaliser cette opération

La première est à base d’un script UNIX

Voici un exemple, dans le répertoire /home/maurice/OUT on supprime les fichiers CSV de plus de 10 jours

Exemple :

find /home/maurice/OUT -type f -name « *.CSV » -mtime +10 -exec rm {} \;

Si vous voulez l’automatiser vous pouvez la mettre dans une commande ==>STRQSH

La deuxième est d’utiliser le nouveau service SQL SYSTOOLS.IFS_UNLINK

C’est une fonction, donc vous pourrez l’intégrer dans un select SQL


on prendra le même cas d’usage pour comparer

Exemple

SELECT path_name, SYSTOOLS.IFS_UNLINK(PATH_NAME)
FROM TABLE (QSYS2.IFS_OBJECT_STATISTICS(START_PATH_NAME => ‘/home/maurice/OUT’,
SUBTREE_DIRECTORIES => ‘NO’))
where ucase(Path_name) like(‘%.CSV%’)
and CREATE_TIMESTAMP < (current date – 10 days) ;

On utilise ici la fonction table QSYS2.IFS_OBJECT_STATISTICS qui permet de lister les fichiers d’un répertoire

Si vous voulez l’automatiser vous pouvez la mettre dans une commande ==>STRSQL ou dans dans du SQL embarqué

Conclusion

Il est important de surveiller L’IFS qui a tendance à grossir de manière excessive, et de supprimer les éléments inutiles

Nos solutions sont simples et efficaces vous pouvez facilement paramétrer les requêtes (répertoire, extension et périodicité)

, , Les tentatives de connexion échouées

Si vous avez mis en œuvre le journal vous pouvez et même devez analyser les refus de connexion.
Le plus souvent c’est un mauvais mot de passe mais ca peut être aussi une attaque, ou un comportement douteux

Voici une requête simple qui permet cette analyse rapide

SELECT JOB_NAME, USER_NAME, FUNCTION, MESSAGE_ID, MESSAGE_TIMESTAMP
FROM TABLE(QSYS2.DISPLAY_JOURNAL(‘QSYS’, ‘QAUDJRN’))
WHERE MESSAGE_ID IN (‘CPF2234’, ‘CPF1107’, ‘CPF1393’)
ORDER BY MESSAGE_TIMESTAMP DESC;

Les messages traités ici
CPF2234 Tentative de connexion échouée.
CPF1107 Mot de passe incorrect.
CPF1393 Accès refusé.

Remarque :
Vous pouvez ajouter des filtres (plage horaire, autres messages de refus , etc …)
Vous devrez découper vous même la zone entry data, vous pouvez également utiliser les fonctions table QSYS2.DISPLAY_JOURNALxx spécialiser par TYPE

Plus d’information ici https://www.ibm.com/support/pages/qsys2displayjournal

, Synchronisez votre partition avec QSNTP

On a de plus en plus besoin d’avoir des machines synchronisées, pour la validation des transactions, des informations de sécurité etc…

il existe un protocole qui permet de synchroniser l’horloge de votre partition c’est le protocole SNTP

On va voir ici comment le mettre en œuvre en tant que client, en sachant que vous pourriez également utiliser votre IBMI comme un serveur

Votre serveur peut être interne ou externe il est accédé sur le port 123 , si vous cherchez un serveur :

https://syrte.obspm.fr/spip/services/ref-temps/article/diffusion-de-l-heure-par-internet-ntp-network-time-protocolv

1) Paramétrage du service TCP/IP

Vous devrez bien sur arrêter et redémarrer le service pour que la modification soit prise en compte

2) Mise en œuvre par la valeur système QTIMADJ mettre QIBM_OS400_NTP pour activer

3) Suivi des mises à jour, elles sont stockées dans un répertoire /QIBM/UserData/OS400/TCPIP/NTP

Vous avez des fichiers de log QTOTxxxx , ils sont horodatés

Vous avez également dans le journal d’audit les postes de type SV (modification de valeurs systèmes) qui peuvent être analysé

Vous y retrouverez les modifications de la valeur système QTIME

Pour en savoir plus

https://www.ibm.com/docs/fr/i/7.5?topic=protocol-scenario-synchronizing-clocks-i

N’hésitez pas c’est simple et efficace

, , , Trouver la fonction usage que vous cherchez ?

?

Vous connaissez les fonctions usage qui vous permettent de sécuriser votre système IBMi

Exemple , accès au fichier

Elles sont organisées par famille

Voici les principales

Base operating system (5770SS1)
TCP/IP connectivity utilities (5770TC1)
Backup, Recovery, and Media Services (BRMS) (5770BR1 5770BR2)
IBM i Access Client Solutions (ACS) (5770XJ1)
IBM Navigator for i

Vous avez un site de référence qui va vous permettre de vous y retrouver c’est ici

https://www.ibm.com/docs/en/i/7.5?topic=reference-supplied-function-ids

Remarque :

De plus en plus de F U sont livrées en mode interdites, ce qui sécurise votre système, attention à QIBM_NAV_ALL_FUNCTION en V7R5 par exemple

, Le Path sous QSH

Vous connaissez tous la notion de liste de bibliothèques qui existe sur l’ibmi

la même notion existe sous unix c’est le path, et qui impacte vos commandes exécutées par exemple à partir de QSH

Vous pouvez le changer temporairement, voici la commande par exemple qui prend votre PATH et lui ajoute l’accès au commande open source de votre machine

PATH=/QOpenSys/pkgs/bin:$PATH
export PATH PASE_PATH

Vous pouvez le changer de maniére dénitive pour une utilisateur

En créant un fichier .profile à la racine de votre path

Ca devrait donner ca /home/<votreuser>/.profile

Vous lui ajouter ces commandes

# Mise en ligne commande Open source
PATH=/QOpenSys/pkgs/bin:$PATH
export PATH PASE_PATH

Vous pouvez le changer globalement pour votre partition

Vous devez créer le fichier /etc/profile et lui ajouter ces lignes

# Mise en ligne commande Open source en plus des commandes standards
export PATH=/usr/bin:.:/QOpenSys/usr/bin

Remarque :

Vous pouvez également travailler en hardcodant , ce n’est pas conseillé pour des raisons de maintenance
exemple une copie de clé publique
/QOpenSys/pkgs/bin/ssh-copy-id ….

Vous pouvez également utiliser la variable d’environnement PATH

ADDENVVAR ENVVAR(PATH) VALUE(‘/usr/bin:.:/QOpenSys/usr/bin’) LEVEL(*JOB)

Vous choisissez le niveau *SYS ou *JOB

Bien sur si vous décidez d’utiliser le fichier etc/profile ou la variable d’environnement PATH avec portée *SYS, pensez à l’impact global sur votre système

PRUV et le cloud

Vous connaissez au moins de nom PRUV, qui est l’outil indispensable qui vous permet de valider vos opérations avant un changement de version .

Depuis quelques temps est apparu une nouvelle option liée au CLOUD

Si tout est ok vous aurez ce résultat

Sinon, il vous faudra prévoir une étape intermédiaire pour aller vers votre future architecture.

Plus d’informations ici

https://www.ibm.com/support/pages/ibm-pre-upgrade-verification-tool-ibm-i

A quoi sert la bibliothèque QRPLOBJ ?

Vous avez souvent sur vos machines de développements beaucoup d’objets à l’intérieur

Vous avez sans doute remarqué que quand vous compiler un objet et qu’il a des erreurs , il vous remet l’ancienne version.

Comment cela est il possible ?

A chaque compile l’objet est renommé est placé dans une bibliothèque qui s’appelle QRPLOBJ

Voici un schéma pour vous expliquer

Cette bibliothèque est clearée à chaque IPL

Pour connaitre la taille de la bibliothèque vous pouvez par exemple utiliser cette requête :

SELECT  LIBRARY_SIZE FROM TABLE(QSYS2.LIBRARY_INFO(‘QRPLOBJ’))

Si elle grossit trop vous devrez faire un coup de ménage, attention elle est interdite par défaut il faut être *ALLOBJ pour faire cette opération

PS :

Vous avez aussi à l’intérieur des objets de type USRQ, USRSPC, c’est souvent sur les CRTxx ou vous pouvez indiquer REPLACE(*YES) sur l’API ou la commande …

Attention
Vérifiez bien votre résultat de compile avant de relancer votre programme sinon vous lancez une vielle version !

Pour en savoir plus sur le ménage:

https://www.ibm.com/support/pages/clearing-qrplobj-without-ipl

Attention

Au verrouillage , mais normalement vous ne devriez pas avoir d’objets verrouillés à l’intérieur ca peut indiquer un autre dysfonctionnement puisque cet objet sera effacé à l’IPL !

, Fréquence des IPL, complément

La préconisation d’IBM et de faire IPL à chaque application de PTFs
pour ne pas perdre le cache SQL par exemple

Mais, il y a quand même un point, pour vous inviter à en faire plus, c’est la mémoire qui est perdu sur certain travaux

Vous avez une vue QSYS2.SYSTMPSTG qui permet de voir les buckets

La vue SYSTMPSTG contient une ligne pour chaque espace de stockage temporaire qui contient une quantité de stockage temporaire sur le système.
Le stockage temporaire est un stockage qui ne persiste pas lors d’un redémarrage du système d’exploitation.
on parle de « BUCKET »

Voici une requête qui montre l’espace perdu par les jobs terminés

SELECT ‘Perdu’ as memoire , sum(BUCKET_CURRENT_SIZE) as taille
FROM qsys2.SYSTMPSTG
WHERE JOB_STATUS = ‘*ENDED’

le détail

SELECT JOB_NAME, JOB_USER_NAME, JOB_NUMBER , BUCKET_CURRENT_SIZE
FROM qsys2.SYSTMPSTG
WHERE JOB_STATUS = ‘*ENDED’
order by BUCKET_CURRENT_SIZE desc

Voici une requête qui donne la taille totale

SELECT ‘Total’ as memoire , sum(BUCKET_CURRENT_SIZE) as taille
FROM qsys2.SYSTMPSTG ;

Vous pouvez faire un ratio et si il est important 10 % par exemple

Vous devrez faire une IPL, pour récupérer cette mémoire

Vue dans Navigator For I

Ps:
A ce jour il n’y a pas d’autres solutions pour récupérer cette mémoire

pour en savoir plus : https://www.ibm.com/support/pages/how-often-ipl-should-be-performed

, Historique d’une macro-commande Arcad

Voici comment visualiser l’historique d’une macro-commande Arcad

Objectifs :

Lorsqu’une macro-commande se termine en anomalie, la joblog peut ne pas être toujours évidente à décrypter ou pire elle peut avoir été supprimée.

Cet article a pour objectif de présenter process à suivre pour pouvoir visualiser chaque étape d’exécution d’une macro-commande Arcad.

Pour cela il faut :

  1. Retrouver l’instance de la macro commande à analyser
  2. Afficher l’historique de l’instance à analyser

1)    Recherche de l’instance de la macro-commande à analyser :

  • Lancer la commande AWRKMACCMD pour accéder à la liste des macro-commandes Arcad.
  • Lancer l’option 5 AFFICHER sur la macro-commande concernée.

Une fois la macro-commande affichée :

  • Faire F9 pour afficher toutes les instances de lancement de la macro-commande

La liste des instances d’exécution de la macro-commande s’affiche.

Dans l’exemple ci-dessus on voit que la 25eme instance n’a pas abouti (Etat à ABN = Abandon).

  • La touche F11 permet de changer de vue et ainsi afficher les dates de traitement, cela facilite l’identification précise de l’instance à analyser.

2)    Afficher l’historique de l’instance à analyser

  • Lancer l’option 13 (Historique) sur l’instance à analyser
  • L’historique des commandes de la macro-commande sera alors affiché

Pour rappel :

  • Les lignes en rouge correspondent aux alertes Arcad
    Attention : ce ne sont pas toujours des anomalies.
  • La touche F8 permet d’afficher l’intégralité de la commande Arcad sur laquelle est positionné le curseur.
    Cela permet de visualiser toute la commande avec tous ses paramètres
  • La touche F16 permet de rechercher une chaine de caractères dans l’ensemble des commandes affichées. Les lignes contenant la chaine de caractères recherchées seront affichées en surbrillance.

Le nombre d’occurrences trouvées sera affiché en bas de l’écran.

, , TR5 SYSTOOLS.CONFIGURATION_STATUS

Cette nouvelle vue vous permet de voir vos unités et leur STATUS

Exemple

La liste des écrans actifs

SELECT *
FROM SYSTOOLS.CONFIGURATION_STATUS
WHERE object_attribute = ‘DSPVRT’
AND STATUS_DESCRIPTION = ‘ACTIVE’
ORDER BY OBJECT_NAME;

Rappel :

les informations la TR sont ici :

https://www.ibm.com/support/pages/ibm-i-75-tr5-enhancements