Sans être un expert réseau on a parfois besoin de surveiller périodiquement des accès à notre partition
(suite à des migrations, des pb réseaux etc …)
Ce poste vous explique comment suivre ces problèmes.
1) Créer un fichier de log
CREATE TABLE VOTREBIB.PINGLOG (
PRESULT CHAR(10) CCSID 1147 NOT NULL DEFAULT » ,
ADRESIP CHAR(20) CCSID 1147 NOT NULL DEFAULT » ,
PDATE DATE NOT NULL DEFAULT CURRENT_DATE ,
PHEURE TIME NOT NULL DEFAULT CURRENT_TIME )
2) Créer un programme qui écrit dans ce fichier
/* +
Ping en boucle et capture le résultat dans le fichier LOG
p_IP : IP sur laquelle effectuer le ping
p_delai : délai en seconde entre chaque ping
*/
PGM PARM( &P_IP &P_DELAI)
/* Paramètres / DCL VAR(&P_IP) TYPE(CHAR) LEN(15)
DCL VAR(&P_DELAI) TYPE(*DEC) LEN(5)
/* Variables / DCL VAR(&L_SQL) TYPE(CHAR) LEN(1300)
DCL VAR(&L_ERR) TYPE(LGL) / Cote */
DCL &L_COTE *CHAR 1 VALUE( » »)
/* Corps */
LOOP: /* Boucle principale */
/* Ping /
CHGVAR &L_ERR VALUE(‘0’)
PING RMTSYS(&P_IP) MSGMODE(QUIET ESCAPE)
MONMSG MSGID(TCP0000)
EXEC(DO)
CHGVAR &L_ERR VALUE(‘1’)
ENDDO /* Log* /
IF COND( &L_ERR = ‘0’ ) THEN(DO)
/* values( 'PING', 'OK', '8.8.8.8' ) */
CHGVAR VAR(&L_SQL) VALUE('insert into pinglog +
values( ''OK'', ''' *TCAT &P_IP *TCAT ''' +
, current date, current time )')
ENDDO
ELSE CMD(DO)
CHGVAR VAR(&L_SQL) VALUE('insert into pinglog +
values( ''KO'', ''' *TCAT &P_IP *TCAT ''' +
, current date, current time )')
ENDDO
/* Logger le binz */
RUNSQL SQL(&L_SQL) COMMIT(*NONE)
/* Continuer */
IF COND( &P_DELAI > 0 ) THEN(DLYJOB &P_DELAI)
DLYJOB &P_DELAI
GOTO LOOP ENDLOOP:
ENDPGM
ce programme va loguer toutes les n secondes
3) Il est conseiller d’associer une commande
CMD PROMPT(‘trace ping’)
PARM KWD(IPADR) TYPE(CHAR) LEN(50) + PROMPT(‘Adresse ip’)
PARM KWD(DELAY) TYPE(DEC) LEN(5) DFT(15) MIN(0) +
PROMPT(‘Delai en secondes’)
Conseils :
Entre 15 et 30 secondes semble être le bon compromis !
Si vous voulez savoir ou est le problème vous devez tester les éléments discriminants,
d’abord sur votre réseau local, ensuite sur le wan, et puis le lan distant, par exemple.
Attention certain équipements ne répondent au trames ICMP