Michele Liberi software
versione 1.04, giugno 2026
|
|
Michele Liberi
mail: mliberi@gmail.com
cell: +393485211456
telegram: @MicheleLiberi
|
liberix
Per motivi di rapidità di sviluppo, e per l'implementazione di algoritmi che non richiedono l'efficienza del linguaggio C, ho scritto una grande quantità di programmi utilizzando la shell dei sistemi UNIX.
I linguaggi di scripting utilizzati sono tre:
- ksh: korn shell, default nei sistemi AIX
- ksh93: korn shell edizione 1993, contiene elementi aggiuntivi rispetto alla ksh, ma non è compatibile al 100% con essa
- bash: bourne again shell, default nei sistemi Linux
Per lunghissimo tempo ho usato la ksh, shell standard dei sistemi IBM AIX, e negli ultimi anni utilizzo sistematicamente la bash, shell standard dei sistemi Linux. La ksh93 è stata utilizzata raramente nei casi in cui avevo realmente bisogno delle funzionalità non presenti nella ksh.
Anche in questo caso, per non dover ogni volta reinventare la ruota, ho raccolto in librerie le funzioni riutilizzabili.
Le librerie di funzioni sono raccolte in moduli, files con estensione .km che vengono generati con il comando kcc e letti a runtime dalle script compilate.
La ricompilazione di un modulo implica la modifica istantanea di tutti i programmi che ne fanno uso.
Nel momento in cui una script viene posta in esecuzione deve reperire tutti i moduli di cui ha bisogno.
Per prima cosa cerca il modulo nella directory dove risiede l'eseguibile, se non c'è lo cerca nel PATH.
Lista dei moduli:
- gp.km
- Questo modulo contiene 53 funzioni di uso generale, che si possono classificare in varie categorie:
- gestione standardizzata dei files .ini, usati per parametrizzare i programmi; per approfondimenti rimando al capitolo parametri e configurazione
- gestione parametri CGI: per l'interazione con un web server
- logging e gestione dei segnali
- manipolazione delle stringhe
- funzioni per la gestione di date, calendari e cronometri
- standardizzazione: tramite l'utilizzo di funzioni si riescono a limare le differenze semantiche tra ksh e bash
- altre funzioni varie
- webauth.km
- Questo modulo contiene 11 funzioni necessarie per la gestione dell'autenticazione applicativa per programmi CGI.
Gestisce il login (cifrato anche su connessioni HTTP) e la persistenza delle sessioni per applicazioni web.
Le due funzioni fondamentali sono:
| funzione | argomenti | descrizione
|
|---|
| webauth_known_user
|
| restituisce rc=0 se esiste una sessione attiva per l'utente.
Le credenziali di login, se presenti, vengono verificate e se valide viene creata una sessione.
Il file di sessione contiene tre informazioni, in caso di non esatta corrispondenza la sessione verrà ritenuta non valida e cancellata:
- nome utente
- indirizzo IP di provenienza della richiesta
- identificativo del browser che ha immesso la richiesta
|
| webauth_require_valid_user
| application name
| verifica che esista una sessione attiva, in caso contrario presenta un form di login
|
- sql.km
- Questo modulo contiene 3 funzioni che permettono di interagire con database oracle o IBM DB/2.
- sql_open: stabilisce una connessione con un database
- sql_close: chiude la connessione
- sql_cmd: esegue una query e restituisce il risultato su stdout, un record per linea. Il separatore di campo è il carattere CTRL-A (codice ASCII 1)
- lra.km
- Questo modulo contiene 2 funzioni che permettono di interagire con un server LRM (logical resource manager):
- lrm_cmd: stabilisce la connessione ed esegue un comando LRM
- lrm_close: chiude la connessione con LRM
Esempio: acquisisce la risorsa logica lic, attende 5s, rilascia la risorsa logica.
#/bin/bash
#kccuse lra.km
lrm_cmd acq lic # acquisisce la risorsa logica lic
sleep 5
lrm_cmd rel lic # rilascia la risorsa
lrm_close # chiude la connessione
- pm.km
- Questo modulo contiene 11 funzioni che permettono di interagire con un server Enovia/PM, un PLM per la gestione di documentezione tecnica.
- ezw.km
- Questo modulo contiene 10 funzioni che permettono di interagire con ezwindow, un tool per lo sviluppo rapido di applicazioni grafiche X-client.
(c) M. Liberi, last updated: 2026-06-09