Вы находитесь на странице: 1из 52
���������������������������� ���� ���
����������������������������
���� ��� ������� ���������� �������������� ����� ����������� ���������� ���� ��� ������ ����������� ���� ��������� ���������� ������ ���� �������� ��
���������������������������������������������������������������������������������������������������������������������������������������
���������������������������������������������������������������������
���������������������������������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
���������������������������������������������������������������������������������������
�������� ������� ������� ������������ ���������� ���� ���� ����� �����������
�������
������
����������
���� �������� ��� ���� �� ������ ��������� ����� �� ���������� �����������
������� ������������������������������� �� ����� �����������������������
���� ��� ��������� ��� ���������� ��� ������������ ���� �����
����������������������������������������������������

www.infomedia.it

www.infomedia.it BIMESTRALE - ANNO 12 - N.64 D I R E T T O R E

BIMESTRALE - ANNO 12 - N.64

D I R E T T O R E

R E S P O N S A B I L E

MARIALETIZIA MARI

(MMARI@INFOMEDIA.IT)

D I R E Z I O N E

E D I T O R I A L E

NATALE FINO

(NFINO@INFOMEDIA.IT)

C O L L A B O R A T O R I

M A R C O

M A R O N G I U

KE N

L E Y B A

A L A N

B E R G

R Y A N

C A R T W R I G H T

HOWARD FOSDICK

E R G R Y A N C A R T W R I G H

GRUPPO EDITORIALE INFOMEDIA SRL VIA VALDERA P.116 56038 PONSACCO (PI) ITALIA

TEL 0587736460 FAX

0587732232

E-MAIL RED_LOGIN@INFOMEDIA.IT SITO WEB WWW.INFOMEDIA.IT

D I R E Z I O N E

NATALE FINO (NFINO@INFOMEDIA.IT)

TE C H N I C A L

B O O K

LISA VANNI

(BOOK@INFOMEDIA.IT)

M A R KE T I N G

&

A D V E R T I S I N G

SEGRETERIA: 0587736441

MARKETING@INFOMEDIA.IT

A M M I N I S T R A Z I O N E

SARA MATTEI

(AMMINISTRAZIONE@INFOMEDIA.IT)

S E G R E T E R I A

ENRICA NASSI

(INFO@INFOMEDIA.IT)

G R A F I C A

PAOLO FRANCO (GRAFICA@GRUPPOINFOMEDIA.IT)

S T A M P A

TIPOLITOGRAFIA PETRUZZI CITTÀ DI CASTELLO (PG)

U F F I C I O

A B B O N A M E N T I

TEL 0587736460 FAX 0587732232

ABBONAMENTI@INFOMEDIA.IT

W W W. I N F O M E D I A . I T

@ INFOMEDIA . IT W W W . I N F O M E D I

EDITORIALE

Letture sempre più digitali

Col passar degli anni aumenta sempre più il numero di lettori che preferiscono le versioni digitali di libri e riviste, pur non disdegnando la classica lettura su supporto cartaceo. Per versione digitale intendo la riproduzione integrale e fedele del prodotto cartaceo e non il mero testo presentato via codice HTML, che ben si adatta alla lettura a video (almeno su uno schermo sufficientemente ampio) ma che ha degli evidenti “cedimenti” nella resa su altri dispositivi e soprattutto all’atto della stampa su carta (nonostante le cosiddette versioni “print friendly”). Le motivazioni pro-digitale sono molteplici e molte sono del tutto ovvie: minori costi di produzione e quindi un prezzo di vendita più basso del prodotto, maggiore compattezza di un file rispetto a un volume cartaceo, possibilità di ricerca, consultazione e lettura da remoto, dovunque sia disponibile una connessione a

Internet; nonché possibilità di scaricare in locale il libro o la rivista (i singoli file degli articoli o l’intero file completo del numero) e poterlo conservare sul proprio notebook,

su uno stick USB e via dicendo. E si possono conservare copie di backup dei file,

approccio non praticabile con il prodotto cartaceo. Dopotutto, la lettura su carta, più distensiva e più attenta della lettura a video su Internet, è sempre e comunque possibile: difatti, in fase di lettura, delle centinaia di pagine di un libro (o degli articoli di una rivista), quasi certamente in un determinato

periodo non si è interessati a leggere ogni capitolo del libro (o articolo della rivista), per cui è possibile stampare solo le parti o gli articoli a cui si è realmente interessati; riservandosi di poter stampare gli altri contenuti se e quando necessario. In termini

di sostenibilità ambientale avremo di certo consumato molta meno carta. E grazie alla

qualità delle attuali stampanti (anche a colori), a quel punto si riscattano gran parte delle prerogative della lettura su carta. Come editori, è molto che proponiamo un’alternativa Web di abbonamento e lettura delle nostre riviste in formato digitale; e dopo l’estate verremo ancor più incontro alle vostre

esigenze di consumo digitale. Sul nuovo sito di e-commerce www.shopinfomedia.com (complementare al sito istituzionale www.infomedia.it), oltre all’acquisto di libri,

di abbonamenti e di singole riviste cartacee (che ricevete direttamente all’indirizzo

indicato senza alcuna ulteriore spesa di spedizione), vi proporremo anche le versioni digitali dei libri da noi editi. E inoltre completeremo l’offerta proponendovi anche un nutrito catalogo di software, e a seguire di altri prodotti informatici di marca,

per cui utilizzando un unico sito potrete approvvigionarvi di prodotti editoriali e non, comunque utili o essenziali per la vostra professione informatica. Prediligendo l’acquisto di prodotti informatici dal nostro sito, ci aiuterete anche a mantenere più accessibile il costo delle versioni digitali rispetto a quelle cartacee. Dopotutto, la specificità della nostra attività è di essere indipendenti e obiettivi, e di restare in vita non grazie a sostanziosi contributi statali ma al vostro supporto e al vostro entusiasmo per gli argomenti che ci appassionano.

Natale Fino

Login Internet Expert n.64 Maggio/Giugno 2007

3

SOMMARIO LOGIN n.64 - Maggio/Giugno 2007

Speciale Tool GUI di configurazione Firewall

Introduzione a Firestarter

di

Ken Leyba

8

Firewall Builder

di

Marco Marongiu

14

Solutions

Il perfetto server di rete

di

Ryan Cartwright

21

Cutting edge

Programmazione veloce con Rexx

di

Howard Fosdick

31

Diagrammazione desktop con Dia e Kivio

di

Alan Berg

39

Spazio Libri

44

Dia e Kivio di Alan Berg 39 Spazio Libri 44 u Futuro @l Femminile 47 Per

u Futuro @l Femminile

47

Per contattare la Redazione di Login

scrivete a:

Gruppo Editoriale Infomedia S.r.l. Via Valdera P. 116 - 56038 Ponsacco (PI) Tel. 0587/736460 (r.a.) - Fax 0587/732232

e-mail: red_login@infomedia.it - http://www.infomedia.it/Login

I listati che corredano gli articoli sono liberamente scaricabili dagli indirizzi:

http://www.infomedia.it/Riviste/Login

Ftp://ftp.infomedia.it/pub/Login/listati

Login Building The Information Highway

è una rivista del Gruppo Editoriale Infomedia S.r.l.

Direzione e amministrazione

Via Valdera P. 116 - Ponsacco (PI)

Registrazione n.18 del 25/11/99 - Contenuto pubblicitario inferiore al 45%

Senza problemi. Crea siti web basati su standard senza grattacapi, con Microsoft ® Expression ®

Senza problemi.

Crea siti web basati su standard senza grattacapi, con Microsoft ® Expression ® Web.

grattacapi, con Microsoft ® Expression ® Web. – Supporto degli standard web XHTML, CSS, XML e

– Supporto degli standard web XHTML, CSS, XML e XSLT.

– SoÞsticate funzioni di design CSS.

– Piena compatibilità con Microsoft Visual Studio ® e supporto per ASP.NET 2.0, per consentire la collaborazione tra il design e lo sviluppo.

Entra nella nuova era del Web Design, visita:

microsoft.com/italy/expression

Se hai già FrontPage, per te uno sconto del 66%

���

���

speciale Tool GUI di configurazione firewall Introduzione a Firestarter Ulteriore sicurezza attraverso una semplice

speciale Tool GUI di configurazione firewall

Introduzione a Firestarter

GUI di configurazione firewall Introduzione a Firestarter Ulteriore sicurezza attraverso una semplice interfaccia.

Ulteriore sicurezza attraverso una semplice interfaccia.

Gran parte delle moderne distribuzioni GNU/Linux sono sicure con le installazioni minime di default, che si tratti di sistemi de- sktop o server, mentre alcune altre distribu- zioni vengono appositamente concepite te- nendo conto in modo specifico della sicurez- za. Tuttavia, una distribuzione GNU/Linux che deve erogare servizi ad altri utenti o ad altri sistemi avrà necessità di una maggiore sicurezza o di una sicurezza configurabile. Ci sono altre situazioni in cui una ulteriore si- curezza è vantaggiosa: ad esempio, un grande ambiente, benché sia sicuro verso il mondo esterno, andrebbe migliorato con ulteriori misure di sicurezza interne.

Progettazione della rete

Ci sono tipicamente solo alcuni tipi di reti nelle realtà più piccole. Un unico computer che comunica con Internet attraverso un sin- golo modem o una linea DSL, o una singola connessione Internet condivisa tra più com- puter sono due esempi (Figura 1). In teoria, la connessione Internet viene protetta da un firewall standalone: un apposito dispositivo firewall hardware o un firewall GNU/Linux dedicato come IPCop. A causa del costo, di problemi di ubicazione o di spazio, l’ideale non è sempre possibile e il firewall deve es- sere su una unica workstation o su una work- station non dedicata che agisce come gateway per gli altri sistemi. In una realtà più grande

8

Login Internet Expert n.64 Maggio/Giugno 2007

Ü di Ken Leyba

con più sistemi operativi, alquanto insicura

per definizione, un personal firewall miglio-

ra la sicurezza, specialmente se una worksta- tion contiene informazioni sensibili.

iptables è un tool, compreso come parte stan- dard delle distribuzioni GNU/Linux, che viene utilizzato per configurare i firewall GNU/Linux. iptables può essere configurato manualmente, o con dei tool di configurazio-

ne del firewall come Shorewall, Firestarter e

vari frontend GUI forniti con le distribuzio-

ni GNU/Linux. Questi tool rendono la con-

figurazione dei firewall molto più semplice delle procedure manuali a riga di comando,

ma forniscono meno granularità, una carat-

teristica che può non essere tipicamente ne-

cessaria in configurazioni meno complesse.

Firestarter

In

base a quanto riportato sul sito Web

di

Firestarter, “Firestarter è un programma

firewall visuale Open Source”. Principalmen-

te, Firestarter è un frontend GUI di iptables,

che elimina la complessità di impostazione

di un semplice firewall per workstation, lap-

top e server. Anche se il sito Web riporta che

Firestarter può essere utilizzato per configu- rare un gateway o un firewall dedicato, esite-

rei

a utilizzare un computer con un ambien-

te

desktop in questo modo. Per un firewall

standalone sarebbe preferibile, e più sicuro,

speciale Tool GUI di configurazione firewall FIGURA 1 Due tipi di reti utilizzare una distribuzione

speciale Tool GUI di configurazione firewall

speciale Tool GUI di configurazione firewall FIGURA 1 Due tipi di reti utilizzare una distribuzione firewall-orientata.
FIGURA 1 Due tipi di reti
FIGURA 1 Due tipi di reti

utilizzare una distribuzione firewall-orientata. Ulte- riori caratteristiche di Firestarter sono: un wizard di configurazione, un monitor di eventi in tempo reale, una configurazione della condivisione della connes- sione Internet, una configurazione del server DHCP, e delle politiche di accesso in ingresso e in uscita.

Installazione

L’installazione del software con gran parte delle mo- derne distribuzioni GNU/Linux è diventata un com- pito pressoché banale. Siccome preferisco ancora il feedback delle installazioni con interfaccia a caratte- ri e la facilità di non dover navigare attraverso trop- pi menu, l’installazione di Firestarter è banale dalla riga di comando. Su un sistema Ubuntu, si accede all’applicazione “terminale” attraverso il sistema di menu del desktop, Applicazioni/Accessori/Terminal. Al prompt del terminale si digita

sudo apt-get install firestarter

alla richiesta della password, inserire la propria pas- sword. Si noti che APT suggerirà un ulteriore pac- chetto, dhcp3-server, che andrebbe utilizzato su un sistema gateway per fornire i servizi DHCP oltre al firewall. Un’altrettanto semplice installazione su un sistema Fedora utilizza il gestore dei pacchetti yum; e come utente root di deve digitare

dei pacchetti yum ; e come utente root di deve digitare F irestarter è un frontend

Firestarter è un frontend GUI di ip- tables, che elimina la complessità di impostazione di un semplice firewall per workstation, laptop e server

di un semplice firewall per workstation, laptop e server yum install firestarter Si può anche installare

yum install firestarter

Si può anche installare Firestarter dalla GUI; in Ubun- tu, ad esempio, si esegue Sistema/Amministrazione/ Symaptic Package Manager ed è necessario semplice- mente individuare “Firestarter” tramite il form di ricerca. Si tenga presente che deve essere abilitato il repository “Universe”.

9

Login Internet Expert n.64 Maggio/Giugno 2007

speciale Tool GUI di configurazione firewall FIGURA 2 Dialogo di impostazione del dispositivo di rete

speciale Tool GUI di configurazione firewall

speciale Tool GUI di configurazione firewall FIGURA 2 Dialogo di impostazione del dispositivo di rete FIGURA
FIGURA 2 Dialogo di impostazione del dispositivo di rete
FIGURA 2 Dialogo di impostazione del
dispositivo di rete
FIGURA 3 Avvio del firewall
FIGURA 3 Avvio del firewall

Opzioni di configurazione

La finestra di dialogo “Internet Connection Sha- ring” permette di abilitare la condivisione della

connessione, utilizzando il sistema come gateway.

Se è presente un secondo dispositivo di rete, questo

verrà ora selezionato come lato locale della rete del gateway. La checkbox del dialogo permette anche di

abilitare un server DHCP sulla rete locale. Poichè in questo esempio è presente un solo dispositivo di rete, utilizzare le impostazioni di default e premere il pul- sante “Forward”. La finestra di dialogo finale, “Rea-

dy to start your firewall”, permette di salvare la con-

figurazione e di avviare il firewall; poiché è proprio ciò che si vuole, basta cliccare sul pulsante “Save” (Figura 3). Ciò completa la configurazione iniziale e viene visualizzata la pagina Status di Firestarter (Fi- gura 4).

La prima preferenza di base che andrà impostata è

“Minimize to tray on window close”. Ciò permette-

rà di visualizzare un’icona nella tray area di sistema

che indicherà lo stato del firewall Firestarter: in ese- cuzione, interrotto o bloccato. Il blocco del firewall disabilita tutte le connessioni di rete in ingresso e

in uscita. Per modificare le impostazioni, nel menu

della pagina Status selezionare Edit/Preferences o clic-

care sul pulsante “Preferences”. Nella sezione Inter-

face del dialogo delle preferenze, abilitare l’opzione

di minimizzazione “Minimize to tray on windows

Una volta terminata l’installazione, dal menu del desktop selezionare Sistema/

Amministrazione/Firestarter. La prima volta che Firestarter viene avviato, viene eseguito il wi- zard di configurazione. Poiché il firewall ver-

rà eseguito come utente privilegiato, ad esem-

pio root, verrà richiesta la propria password. Il wizard di configurazione vi conduce attra- verso un semplice processo per configurare un firewall “essenziale”. Alla comparsa della schermata di benvenuto premere il pulsante “Forward”. La finestra di dialogo “Network Device Setup” visualizza i dispositivi di rete rilevati e sono disponibili due checkbox (Fi- gura 2). La prima checkbox è per avviare il firewall in modalità dial-out; in altri termi- ni, avvierà il firewall quando si utilizza una connessione di rete dial-up. La seconda che-

ckbox è per permettere a un sistema di riceve-

re un indirizzo IP attraverso un server DHCP, ad esempio attraverso un modem, una linea

DSL, o tramite il server DHCP aziendale. Dal menu a discesa selezionare il dispositivo di rete lato Internet; se si ha un solo dispositivo

di rete, come in questo esempio, utilizzare il

dispositivo di default eth0 e premere il pulsan-

te “Forward”.

FIGURA 4 La pagina di stato di Firestarter
FIGURA 4 La pagina di stato di Firestarter

10

Login Internet Expert n.64 Maggio/Giugno 2007

speciale Tool GUI di configurazione firewall FIGURA 5 La pagina degli eventi zio) delle undici

speciale Tool GUI di configurazione firewall

speciale Tool GUI di configurazione firewall FIGURA 5 La pagina degli eventi zio) delle undici colonne
FIGURA 5 La pagina degli eventi
FIGURA 5 La pagina degli eventi

zio) delle undici colonne della vista degli eventi. Le colonne sono personalizzabili dalla sezione “Show Column” della voce di menu “Events”. Gli eventi hanno un codice di colore in ordine di severità:

in

grigio per eventi innocui (ad es. di tipo broa-

 

dcast)

gli eventi in nero rappresentano ordinari tentativi

di

connessione verso una porta random

quelli in rosso rappresentano possibili tentativi verso servizi non pubblici

Nella figura, l’evento evidenziato in rosso è proba- bilmente un innocuo evento NFS della rete locale.

Ci sono anche diversi eventi SMB in grigio relativi a

workstation Windows della rete. Il numero di eventi visualizzati può essere ridotto impostando della pre- ferenze le voci “Skipping redundant entries” (ossia “Ometti voci ridondanti”) e “Skip where the destina- tion is not the firewall” (ossia “Ometti se la destina-

zione non è il firewall”).

FIGURA 6 Eventi e aggiunta di accesso
FIGURA 6 Eventi e aggiunta di accesso

close” e poi premere il pulsante “Accept”.

Visualizzazione degli eventi

Una delle caratteristiche più piacevoli di Firestar- ter è la capacità di visualizzare eventi in tempo reale attraverso la pagina Events. Per visualizzare questi eventi bisogna passare alla scheda “Events” della pa- gina Status (Figura 5). Per default, vengono visualiz- zate cinque (ora, porta, sorgente, protocollo e servi-

Consentire l’accesso

Il permettere l’accesso al sistema protetto da firewall avviene in due modi: o attraverso la pagina delle Po-

licy o tramite la pagina Events. Nella Figura 6, vengo-

no visualizzati due tipi di eventi: SMB e tentativi di

connessione SSH. Per consentire connessioni secure shell da un particolare host, selezionare e poi effet- tuare un clic destro sull’evento e selezionare “Allow inbound service for source” (“Consentire servizio in in-

FIGURA 7 La pagina delle policy
FIGURA 7 La pagina delle policy

11

Login Internet Expert n.64 Maggio/Giugno 2007

speciale Tool GUI di configurazione firewall FIGURA 8 Aggiunta di nuove regole “in ingresso” FIGURA

speciale Tool GUI di configurazione firewall

speciale Tool GUI di configurazione firewall FIGURA 8 Aggiunta di nuove regole “in ingresso” FIGURA 9
FIGURA 8 Aggiunta di nuove regole “in ingresso”
FIGURA 8 Aggiunta di nuove regole
“in ingresso”
FIGURA 9 Wizard di configurazione: condivisione della connessione
FIGURA 9 Wizard di configurazione:
condivisione della connessione

Due esempi in cui questa caratteristica può essere utilizzata è nel permettere l’accesso completo da una workstation che deve accedere alla macchina per sco- pi di amministrazione, o nel permettere l’accesso a un particolare gruppo di macchine della stessa sot- torete. Tuttavia, è più sicuro permettere a specifiche macchine solo i servizi necessari, piuttosto che apri- re l’accesso completo a gruppi di macchine.

Configurazione di un gateway

L’impostazione del firewall come sistema gateway ri- chiede alcuni passi di preparazione prima della con- figurazione.

I dispositivi verso la rete Internet e verso la rete loca- le devono essere identificati e configurati con il tool Network Configuration o con un altro metodo di configurazione preferito. Ad esempio, eth0 come in- terfaccia lato Internet configurata con DHCP e eth1 per la rete locale configurata con un indirizzo IP sta- tico. Il servizio server DHCP dovrà anche essere sta- to installato, ad esempio eseguendo

sudo apt-get install dhcp3-server

o utilizzando Synaptic, e avviato.

Ancora

il wizard di configurazione

Una volta che i dispositivi di rete sono impostati e il server DHCP è in esecuzione, può essere eseguito il Configuration Wizard. Il Configuration Wizard, ancora una volta, viene eseguito la prima volta che Firestarter viene avviato. Il wizard può anche esse- re eseguito dal menu della pagina Status, sceglien- do Firewall/Run Wizard. Nell’utilizzo del wizard si procedere come nel precedente esempio. Giunti alla finestra di dialogo “Internet connection sharing se- tup”, selezionare il secondo dispositivo di rete (Figu- ra 9), che nell’esempio è eth1, poi concludere il wi- zard come si è fatto prima. Il DHCP verrà configura- to in seguito attraverso le preferenze di Firestarter.

gresso”). Ciò crea una regola di policy in Firestarter

per permettere connessioni SSH solo dalla macchina sorgente; ciò può essere verificato nella pagina Poli-

cy

(Figura 7). Poiché SMB (il servizio di condivisio-

ne

file di Windows) utilizza diverse porte, è più facile

creare una regola nella pagina Policy per permettere l’accesso SMB. Nella pagina Policy, cliccare “Allow

service” (“Consenti servizio”) e poi premere l’icona per aggiungere la regola, “Add Rule”. Nella finestra

di dialogo per aggiungere nuove regole in ingresso

(“Add new inbound rule”), mostrata nella Figura 8, selezionare “Samba (SMB)” dal menu a discesa e lasciare selezionato il pulsante radio al valore di default “Anyone”; poi premere il pulsante “Add” per chiudere il dialogo. Infine, premere il pulsante “Ap- ply Policy” per attivare immediatamente la regola. La pagina Policy permette anche di abilitare l’ac- cesso completo da specifiche macchine o sottoreti.

12

Login Internet Expert n.64 Maggio/Giugno 2007

DHCP viene configurato nella finestra di dialo-

FIGURA 10 Nuova configurazione DHCP
FIGURA 10 Nuova configurazione DHCP
speciale Tool GUI di configurazione firewall FIGURA 11 Servizi di inoltro go Preferences , e

speciale Tool GUI di configurazione firewall

speciale Tool GUI di configurazione firewall FIGURA 11 Servizi di inoltro go Preferences , e nella
FIGURA 11 Servizi di inoltro
FIGURA 11 Servizi di inoltro

go Preferences, e nella sezione Firewall selezionare Network Settings (Figura 10). Qui si possono spe- cificare le impostazioni dei dispositivi di rete lato Internet e lato rete locale. Entrambe le opzioni “Ena- ble Internet connection sharing” e “Enable DHCP for local network” vanno selezionate. Il pulsante ra- dio “Create new DHCP configuration” va seleziona- to e va impostato l’intervallo di indirizzi DHCP che questo server fornirà. Un elenco di server DNS può essere impostato nella casella “Name server:”; sono ammessi o gli indirizzi IP o i nomi di dominio deli- mitati da virgole. Vi è una voce speciale che può es- sere impostata, dynamic, utilizzata quando il sistema firewall ricava il proprio elenco di server DNS da un server DHCP, ossia quando è impostato dal proprio ISP o dal server DHCP aziendale.

Inoltro e blocco dei pacchetti

Nello scenario gateway, è disponibile una ulteriore caratteristica. Poiché tutti i sistemi del lato rete lo- cale del firewall condividono tutti lo stesso indirizzo IP attraverso il Network Address Translation (NAT), l’inoltro può indirizzare i servizi verso specifiche macchine. Nella pagina Policy, è visualizzata una ul- teriore sezione dei servizi di inoltro (Figura 11). Sul lato rete locale del firewall può essere impostato un Web server e tutto il traffico di rete relativo al Web può essere rediretto dal firewall al server Web.

Una ulteriore caratteristica è bloccare l’accesso ai ser-

FIGURA 12 Blocco dei server esterni
FIGURA 12 Blocco dei server esterni

vizi esterni o gli host alla rete locale. Ciò viene ese- guito nella pagina Policy, nella sezione Outbound traf- fic policy (Figura 12). Può essere aggiunto un elenco

di host “denied”. Un modo migliore per eseguire ciò

sarebbe con un filtro di contenuti su un firewall dedi- cato o su un proxy Web. Si tratta di un modo semplice

benché serva a un bloccaggio di base degli host.

Conclusioni

Firestarter è un’interfaccia grafica facile da utilizzare per la configurazione di un semplice firewall persona-

le o di un sistema gateway. Il sito Web di Firestarter

contiene ulteriori informazioni e la documentazione corrente, benché lo sviluppo mi è sembrato essere giunto a uno stop. Nonostante lo stato dello sviluppo,

la mailing list è ancora attiva e Firestarter viene anco-

ra inserito nelle recenti distribuzioni GNU/Linux.

Versione italiana pubblicata su licenza di The Open Mind Company

Note Biografiche

Note Biografiche
Note Biografiche Ken Leyba , lavora nel settore IT sin dai primi anni 1980, prima come
Note Biografiche Ken Leyba , lavora nel settore IT sin dai primi anni 1980, prima come
Ken Leyba , lavora nel settore IT sin dai primi anni 1980, prima come tecnico

Ken Leyba, lavora nel settore IT sin dai primi anni 1980, prima come tecnico hardware (con accanto l’immancabile oscillosco- pio), e attualmente come amministratore di sistemi. Dovendo supportare sia Windows sia Linux, Windows lo mantiene co- stantemente impegnato mentre Linux rende piacevole il suo lavoro.

13

Login Internet Expert n.64 Maggio/Giugno 2007

speciale Tool GUI di configurazione firewall Firewall Builder 14 Una utility GUI di configurazione del

speciale Tool GUI di configurazione firewall

speciale Tool GUI di configurazione firewall Firewall Builder 14 Una utility GUI di configurazione del firewall

Firewall Builder

14

Una utility GUI di configurazione del firewall

Ü di Marco Marongiu

Avete mai voluto configurare un personal firewall per la vostra GNU/Linux box, ma eravate atterriti dalla complessità di iptables? Bene, potrei non essere in grado di trasfor- marvi in esperti di sicurezza, ma posso mo- strarvi uno strumento che vi aiuterà a con- figurare il proprio personal firewall in modo facile. Il segreto? Firewall Builder (noto anche come fwbuilder per brevità). Firewall Builder è una interfaccia grafica (GUI) che permette di configurare diversi “engine” di firewall in molti ambienti differenti. Dal- la versione 2.0.9 supporta questi software firewall:

FWSM

ipfilter

iptables

PF

PIX

ipfw

e questi ambienti:

FreeBSD

Cisco FWSM

Linksys/Sveasoft

GNU/Linux (kernel 2.4 and 2.6)

MacOS X

OpenBSD

Cisco PIX

Solaris

Login Internet Expert n.64 Maggio/Giugno 2007

Ovviamente, se avessi dovuto parlare di sicu- rezza Internet in generale e di tutti i possibili utilizzi di Firewall Builder su tutte le possi- bili piattaforme, avrei fatto meglio a scrivere un libro. Perciò, mi concentrerò su un caso specifico: la configurazione di un “personal” firewall (cioè, un firewall che protegge solo il computer su cui è in esecuzione) su una macchina configurata per ricevere l’indiriz- zo IP via DHCP. Come prima cosa creerò la configurazione di base con un wizard e poi aggiungerò alcune personalizzazioni.

La piattaforma su cui lavorerò è costituita da:

Linux 2.6 (Debian Testing)

Firewall Builder 2.0.9

iptables 1.3.6

Assumerò che abbiate già installato Firewall Builder sul vostro sistema (utilizzando, ad esempio, apt-get o il Synaptic Package Ma- nager).

Avvio di Firewall Builder

Si può eseguire Firewall Builder individuan- dolo in un menu e cliccando sulla relativa icona, o semplicemente aprendo una finestra terminale e digitando fwbuilder. Il program-

speciale Tool GUI di configurazione firewall FIGURA 1 Inizio della creazione del proprio personal firewall

speciale Tool GUI di configurazione firewall

speciale Tool GUI di configurazione firewall FIGURA 1 Inizio della creazione del proprio personal firewall F
FIGURA 1 Inizio della creazione del proprio personal firewall
FIGURA 1 Inizio della creazione del proprio personal
firewall
1 Inizio della creazione del proprio personal firewall F irewall Builder è una GUI che per-

Firewall Builder è una GUI che per- mette di configura- re diversi “engine” di firewall

per- mette di configura- re diversi “engine” di firewall A questo punto viene presentato un elenco

A questo punto viene presentato un elenco di template predefiniti. Scegliamo “host fw template 1” e procediamo (Figura 4).

Dopo alcuni momenti viene mo- strata una rappresentazione grafica delle regole predefinite di questo template. Come ci si renderà conto facilmente, si può accettare connes- sioni SSH, richieste di ping e altri utili richieste ICMP (regola 0); sarà anche permesso aprire connessio- ni verso qualsiasi destinazione si voglia (regola 1). L’ultima regola (regola 2) sarà quella che verrà uti- lizzato se non sono soddisfatte né la regola 1 né la regola 2: la connes- sione viene negata e il tentativo di connessione viene memorizzato nel log.

Assumendo per ora di essere soddi- sfatti di queste regole, come si pos- sono utilizzare effettivamente?

Basta premere il pulsante gear (Compile) nella barra dei pulsanti. Apparirà una finestra come quella mo- strata nella Figura 5. Poichè riporta il messaggio “Po- licy compiled successfully”, ci si può ben attendere di trovare qualcosa da qualche parte che infine attiverà il proprio nuovo firewall, ma dove? Date un’occhiata alla prima riga, che riporta:

fwb_ipt -f /home/bronto/ifts.fwb -d /home/bronto ifts

Siccome il file sorgente è

ma si presenterà con una finestra iniziale che richiede

se si vuole aprire un file esistente o se si vuole creare

un nuovo progetto: scegliamo di creare un nuovo file, attribuiamo un nome al file, e poi premiamo “Next”. Successivamente, viene richiesto se si vuole utilizzare un Revision Control System e se si vuole che questo

progetto sia quello di default. Siccome stiamo facen- do delle prove, lasciamo l’opzione non selezionata e procediamo premendo “Finish”. Il bello inizia ora.

Osservate la cartella “Firewalls” in alto a sinistra (Fi- gura 1): è vuota e andremo a crearne una nuova. Con un clic destro sulla cartella scegliamo “New firewall” dal menu di contesto.

A questo punto viene richiesto un nome, una appli-

cazione firewall e un sistema operativo: come nome, sceglietene uno di vostro gradimento (“ifts” è il nome

che ho attribuito al mio firewall per motivi storici);

per le altre due opzioni, assumerò che stiate utilizzan-

do iptables su GNU/Linux. Per utilizzare il wizard, as-

sicuratevi di selezionare l’opzione “Use preconfigu- red template firewall objects”(Figura 2).

/home/bronto/ifts.fwb

allora ciò che è correlato a “ifts” è stato probabilmen- te salvato in

/home/bronto

che è la mia directory “home”. Se andate a verificare (utilizzando Nautilus o utilizzando la riga di coman- do) troverete un file .fw in questa directory (nel mio caso: /home/bronto/ifts.fw). È uno script shell a cui si può dare un’occhiata: si vedrà che le regole create

RIQUADRO 1Versioni di Firewall Builder Firewall Builder 2.0.9 non è l’ultima release disponibile, ma è

RIQUADRO 1Versioni di Firewall Builder

RIQUADRO 1Versioni di Firewall Builder Firewall Builder 2.0.9 non è l’ultima release disponibile, ma è quella

Firewall Builder 2.0.9 non è l’ultima release disponibile, ma è quella attualmente fornita in distribuzioni come Debian Testing e Ubuntu Edgy. La release più recente è la 2.1.14, che po- tete compilare da voi, scaricando il sorgente da SourceForge.

15

Login Internet Expert n.64 Maggio/Giugno 2007

speciale Tool GUI di configurazione firewall FIGURA 2 Selezione della piattaforma del firewall sto caso,

speciale Tool GUI di configurazione firewall

speciale Tool GUI di configurazione firewall FIGURA 2 Selezione della piattaforma del firewall sto caso, basta
FIGURA 2 Selezione della piattaforma del firewall
FIGURA 2 Selezione della piattaforma del firewall

sto caso, basta cliccare sul servizio SSH nel- l’interfaccia e premere il tasto “Del”: il ser- vizio scomparirà . Si può ora ricompilare ed eseguire il nuovo script, ma prima di farlo è meglio scartare le vecchie regole. Per farlo, basta digitare questi pochi comandi in una finestra terminal come utente root:

iptables -F

iptables -X

for CHAIN in INPUT OUTPUT FORWARD ; do iptables -P $CHAIN ACCEPT ; done

Queste tre righe azzereranno le regole di tut- te le tabelle, delle catene create dall’utente e reimposteranno la policy di default a AC- CEPT delle tre tabelle principali: INPUT, OUTPUT e FORWARD. Le preceden- ti righe si possono inserire in uno script shell. Nel mio caso ho denominato lo script shutdownfw.sh. Non è necessario eseguire l’operazione da riga di comando; se si sta utilizzando GNO- ME, basta seguire questo procedimento:

clic destro con il mouse nella propria

home directory, e scegliere “crea file vuoto”.

graficamente sono state trasformate in comandi ipta- bles. Per applicare queste regole, basta eseguire questo script come utente root ed è tutto.

denominare il file shutdownfw.sh.

clic destro sul file e scegliere la scheda “permes- si”

16

Se non si vuole utilizzare la riga di comando, e si sta

utilizzando GNOME, sarà necessario aprire una finestra “Nautilus root”. Per farlo, pre- mere ALT+F2 (in GNOME) e digitare il co- mando:

selezionare la casella “Permetti esecuzione del file

FIGURA 3 Utilizzo del firewall
FIGURA 3 Utilizzo del firewall

gksudo “nautilus --browser”

Passate alla vostra directory home (nel mio caso, /home/bronto) e effettuate un doppio cli-

ck sul file ifts.fw. Scegliete l’opzione “Esegui

in finestra terminale”, e … voilà: il comando

firewall viene eseguito! (Figura 6)

Se si è più abituati a utilizzare la riga di co- mando, si può eseguire lo script appena creato aprendo una finestra terminale e eseguendo:

$ sudo /home/bronto/ifts.fw

Sono passati solo pochi minuti da quando ave-

te iniziato a utilizzare Firewall Builder e avete

già un firewall in esecuzione sul vostro PC!

Modificare le regole: rimozione dei servizi

Si

potrebbe non voler permettere a nessuno

di

connettersi al proprio PC via SSH. In que-

Login Internet Expert n.64 Maggio/Giugno 2007

speciale Tool GUI di configurazione firewall FIGURA 4 La prima configurazione di firewall è già

speciale Tool GUI di configurazione firewall

speciale Tool GUI di configurazione firewall FIGURA 4 La prima configurazione di firewall è già pronta!
FIGURA 4 La prima configurazione di firewall è già pronta!
FIGURA 4 La prima configurazione di firewall è già pronta!

come programma”. Il file non viene contrassegna- to come file eseguibile.

fare doppio clic sul file. Piuttosto che scegliere “Esegui nella finestra terminale”, scegliere “Di- splay”.

aggiunta dei servizi

Si supponga di voler abilitare più servizi. Ad esempio, si ha un ser- ver web su proprio PC e si vuole permettere di potersi connettere dal- l’esterno.

Se si clicca con il mou- se sul menu a discesa che al momento mo- stra “Utente” si otterrà un secondo elemento cliccabile: “Standard”. Quando si clicca su di esso, nel riquadro sot- tostante apparirà una nuova serie di cartel- le. Aprire la cartella “Services”, poi la sot- tocartella “TCP” e in- dividuare il servizio “HTTP”. Basta tra- scinarlo nella colonna

“Servizi” della regola 0, ed è tutto. Volendo, si possono anche eliminare le regole appena aggiunte, seguente le istruzioni che ho scritto prima nell’arti- colo. Al termine delle modifiche, bisogna ricompilare ed eseguire nuovamente lo script per attivare le nuo- ve regole.

incollare nel file i seguenti comandi

Permettere l’accesso solo a computer locali

#!/bin/bash

E se si volesse che solo gli altri computer della pro- pria rete locale si possano connettere al server Web? È un po’ più elaborato dei precedenti casi, ma anticipo

iptables -F

iptables -X

for CHAIN in INPUT OUTPUT FORWARD ; do iptables -P $CHAIN ACCEPT ; done

Si tratta precisamente degli stessi comandi che ho scritto prima, ma con all’inizio la direttiva #!/ bin/bash. (Figura 7)

È tutto pronto per pro- cedere: basta un doppio clic sul file stesso, ma questa volta si sceglie “Esegui nella finestra terminale”. Il program- ma verrà eseguito e ver- ranno azzerate le regole del firewall.

Modifica delle regole:

FIGURA 5 Compilazione delle regole del firewall
FIGURA 5 Compilazione delle regole del firewall

17

Login Internet Expert n.64 Maggio/Giugno 2007

speciale Tool GUI di configurazione firewall FIGURA 6 Esecuzione di un comando 18 che non

speciale Tool GUI di configurazione firewall

speciale Tool GUI di configurazione firewall FIGURA 6 Esecuzione di un comando 18 che non è
FIGURA 6 Esecuzione di un comando
FIGURA 6 Esecuzione di un comando

18

che non è così difficile. Supponiamo che la propria

rete locale adotti il comunissimo schema di indiriz- zamento privato 192.168.1.0/24 (gli host della propria rete avranno l’indirizzo 192.168.1.1,

di solito assegnati al gateway, e da

192.168.1.2 fino a 192.168.1.254). Per prima cosa, si sta limitando l’ac-

cesso da una specifica rete. Quindi, non si può utilizzare la regola 0 che agisce su qualsiasi indirizzo sorgen- te; è necessario aggiungere una re- gola. Per aggiungerla sotto la regola 0, cliccare con il tasto destro su “0” e selezionare “Aggiungi regola sotto-

stante”. Si otterrà una finestra come quella nella Figura 6. È poi necessa-

rio modificare alcune cose.

Per prima cosa, per default si ag- giungono sempre le regole “deny”, mentre questa volta si vorrebbe ag- giungere una regola “accept”; per- tanto, clic destro sull’icona “deny” e selezionare invece “accept”. Inoltre, per default le nuove regole hanno il logging attivato; di solito non è ne- cessario effettuare il log dei pacchet- ti che soddisfano le regole “accept” (mentre spesso si desidera effettuare il log dei pacchetti che soddisfano

le regole “deny”); pertanto, si effettua un clic destro anche sull’icona di logging, e si disabilita questa fun- zionalità.

FIGURA 7 Impostazione dei permessi
FIGURA 7 Impostazione dei permessi

Login Internet Expert n.64 Maggio/Giugno 2007

speciale Tool GUI di configurazione firewall FIGURA 8 Aggiunta di una nuova regola Eseguire automaticamente

speciale Tool GUI di configurazione firewall

speciale Tool GUI di configurazione firewall FIGURA 8 Aggiunta di una nuova regola Eseguire automaticamente lo
FIGURA 8 Aggiunta di una nuova regola
FIGURA 8 Aggiunta di una nuova regola

Eseguire automaticamente lo script firewall

Se si vuole eseguire automa- ticamente il proprio script firewall, si può aggiungerlo nel proprio file rc.local. Se si sta utilizzando un sistema De- bian o basato su Debian (come Ubuntu), e assumendo che il proprio script sia

/home/bronto/ifts.fw

basta aggiungere la preceden- te riga al file file /etc/rc.local (prima del comando exit alla fine dello script). Si può far- lo utilizzando la GUI (come ho spiegato prima, utilizzando la finestra “Nautilus root” per modificare /etc/rc.local) (Figu- ra 9).

Ora la parte interessante. Come prima, trascinare il servizio “HTTP” nella cella “Service”. Dopodiché, aprire la cartella “Objects”, quindi la sottocartella “Networks”: individuate l’icona “net-192.168.1.0” e trascinatela nella cella “Source”.

Fin qui tutto ok, ma ora manca l’icona della cella “destinazione”: dove si è nascosto il proprio host/ firewall? Beh, siccome si tratta di una regola del vostro firewall, la sua posizione non è nelle cartelle “Standard” ma nelle cartelle “User”. Tornate alle car- telle “User” cliccando sul menu a discesa nella parte in alto a sinistra che al momento visualizza “Stan- dard”; cercate nelle cartelle e individuate la vostra re- gola nella cartella “Firewalls”, poi trascinatela nella cella. Ed è tutto!

FIGURA 9 Il nuovo file /etc/rc.local
FIGURA 9 Il nuovo file /etc/rc.local

Conclusioni

In questo articolo ho fornito alcuni semplici esempi

che, spero, vi aiuteranno a prendere confidenza con Firewall Builder. Ora potete continuare a fare esperi-

menti con questo pacchetto.

Si tenga presente che iptables è potente e complesso:

Firewall Builder cela gran parte della complessità ma

al

contempo nasconde anche una parte della potenza

di

iptables. Per ottenere il massimo da iptables è ne-

cessario comprenderlo in modo approfondito, ed è anche necessaria una conoscenza dei principi di sicu-

rezza di Internet e dei protocolli Internet. La creazione di proprie regole iptables con Firewall Builder e la comprensione di ciò che fanno è un buon modo per apprendere come funziona iptables, ma non aspettatevi di andare lontano senza approfondire la teoria.

Risorse

Sito Web Firewall Builder http://www.fwbuilder.org/

Note Biografiche

Note Biografiche
Note Biografiche Marco Marongiu , laureato in matematica nel 1997, lavora come amministratore di sistema per
Note Biografiche Marco Marongiu , laureato in matematica nel 1997, lavora come amministratore di sistema per
Marco Marongiu , laureato in matematica nel 1997, lavora come amministratore di sistema per Tiscali.

Marco Marongiu, laureato in matematica nel 1997, lavora come amministratore di sistema per Tiscali. E’ anche programma- tore Perl, articolista per alcune riviste specializzate e relatore in seminari tecnici. Si interessa di tecnologie legate al Web e all’XML. E’ un affezionato utente di Debian GNU/Linux sin dalla versione 1.1.10 e cofondatore del GULCh (Gruppo Uten- ti Linux Cagliari), il primo LUG della Sardegna.

19

Login Internet Expert n.64 Maggio/Giugno 2007

solutions

Il perfetto server di rete

Un server per piccole reti realizzato con software free

Ü di Ryan Cartwright

reti realizzato con software free Ü di Ryan Cartwright Avete necessità di un server? Non un

Avete necessità di un server? Non un server Web naturalmente, nel qual caso affittate del-

lo spazio su un server di qualcun’altro. No,

avete necessità di un file server, di un server

di stampa, di un server intranet, di un mail

server e via dicendo. Può il software free for- nire la risposta? Naturalmente può!

Sofferenze che crescono

Molte reti aziendali si evolvono in modo quasi organico: si parte da un unico PC, poi viene aggiunto un secondo PC e all’im- provviso ce ne sono cinque o dieci. Talvolta si tratta di sistemi standalone ma più spesso sono sistemi in reti peer-to-peer. Alla fine ciò diventa scomodo ed è desiderabile qualche tipo di soluzione server. A questo punto il “piccolo” budget IT si fa più vorace. I ser- ver proprietari sono costosi da acquistare, anche in termini di acquisto delle licenze. Il software free offre da tempo diverse alterna- tive in questo campo e questo articolo tende a discutere queste opzioni e a spiegare come

si può installare un server LAN basato su

software free, che vi permetterà di partire in piccolo ma che può evolversi in base alle vo-

stre esigenze con un minimo esborso extra. Pertanto, se state cercando di eseguire il de- ployment di un server ma siete recalcitranti rispetto ai costi e alle necessità hardware di un server Microsoft Exchange, proseguite la lettura. La Figura 1 mostra una tipica architettura di rete del vostro server; per gli scopi di que- sto articolo farò riferimento a circa cinque/ dieci PC client connessi ad una unica linea ADSL.

Scelte hardware

Per prima cosa, mi occuperò della scelta del- l’hardware. L’hardware del server per questo tipo di progetti non sarà particolare. Si ten- ga presente che sul server non sarà in esecu- zione una GUI, pertanto non sarà necessaria una scheda grafica 3D con 128 MB di memo- ria. Anche l’audio è irrilevante, al di là del beep di sistema, pertanto non sono necessari neanche dei subwoofer. La CPU, la RAM e il disco rigido saranno componenti cruciali così come lo è lo storage rimovibile se si va a implementare una soluzione di backup “on- site”.

21

Login Internet Expert n.64 Maggio/Giugno 2007

solutions FIGURA 1 Una tipica architettura di rete del sistema da realizzare Quanto veloce e

solutions

FIGURA 1 Una tipica architettura di rete del sistema da realizzare
FIGURA 1 Una tipica architettura di rete del sistema da realizzare

Quanto veloce e capiente deve essere il server dipen- de dall’utilizzo che se ne deve fare, quindi le confi- gurazioni possono essere varie. Tuttavia, come guida, ho installato di recente due server di questo tipo. Uno serve cinque utenti in un piccolo ufficio ed è un Pen- tium II 700 con 256 MB di RAM e un disco IDE da 40 GB. L’altra macchina serve circa 50 utenti ed ese- gue un bel po’ di servizi. Si tratta di un Pentium 4 a 3GHz con 1 GB di RAM e un array RAID con due dischi SCSI da 160 GB. Il primo ha un masterizza- tore DVD connesso via USB e il secondo una unità a nastro AIT-2. Il primo server era un vecchio PC de- sktop non più necessario e il secondo era un sistema a rack realizzato ad hoc. Naturalmente, nessuno dei due ha un monitor (permanente), né tastiera o mouse connessi.

È improbabile che avrete dei problemi hardware specifici all’esecuzione di software free. Specialmen- te considerando i progressi fatti dalle distribuzioni GNU/Linux e dalle varie opzioni di BSD. Al limite, starei attento alle vecchie schede di rete più vecchie e ai dispositivi montati sulle motherboard poiché alcu- ni di questi possono utilizzare chipset particolari. Se si ha qualche problema si possono acquistare online delle alternative abbastanza economiche compatibili con GNU/Linux.

22

Login Internet Expert n.64 Maggio/Giugno 2007

Concepito per servire

Cosa si prevede possa servire un siffatto server? Ecco alcuni suggerimenti: file (Samba); stampan-

ti (CUPS); Dynamic Host Configuration Protocol

(DHCP); mail (Exim/Procmail/Qmail/Sendmail) e siti Web interni alla intranet (Apache).

I nomi fra parentesi indicano i tipici pacchetti sof- tware free utilizzabili per fornire questi servizi. Il paragrafo “Risorse” al termine dell’articolo contie-

ne gli indirizzi di gran parte dei rispettivi siti Web. I servizi mail e intranet possono essere erogati altrove ma ci possono ben essere situazioni in cui un account ADSL standard viene utilizzato per la connettività e ciò comprende un unico account email “pigliatutto”. La presenza di un server come questo permetterebbe

di assegnare a tutto lo staff singoli indirizzi di email.

Analogamente, può essere disponibile un sito Web, ma in un unico ambiente aziendale un server locale

fornirebbe una intranet più maneggevole e control- labile.

Le opzioni del software free

Benché ci siano molti modi per approcciare questa “gatta da pelare”, mi concentrerò sui due modi più

FIGURA 2 L’installer Debian mostra le collezioni dei pacchetti disponibili
FIGURA 2 L’installer Debian mostra le collezioni
dei pacchetti disponibili

diffusi di eseguire il deployment di un server LAN basato su software free:

Realizzarlo in proprio a partire da una tipica di- stribuzione

Scaricare e installare una idonea distribuzione ad hoc

Pertanto, come decidere? Il mio consiglio è di opera- re in base a quanto tempo, budget e competenze avete

a disposizione e basare la scelta su questi fattori. Se

non avete affatto tempo, fossi in voi mi fermerei su- bito. Installare un server richiede del tempo (anche,

o specialmente, un server proprietario). Se avete a di-

sposizione due settimane, sapete utilizzare la riga di

comando e amate le sfide allora potrete optare per la prima opzione. Se avete a disposizione una settimana

e non sapete cos’è la riga di comando allora è bene procedere con la seconda opzione.

Descriverò un esempio per ciascun tipo di scelta. Naturalmente, le vostre preferenze possono differi- re dalle mie ma è proprio questo il bello del software free: poter scegliere. Un ulteriore aspetto è la scalabi- lità. Entrambe queste opzioni potranno, con un hard- ware adeguato, scalare per supportare impostazioni molto più complesse.

Opzione uno: server “fai da te”

Realizzare un proprio server a partire da una distri- buzione standard richiederà più lavoro, particolar- mente nella manutenzione dei pacchetti, nella instal-

lazione degli aggiornamenti, e via dicendo; ma sarà il “vostro” server: eseguirà il software che avete scelto

e sarà personalizzato fino al punto che desiderate. È

improbabile che per questo tipo di sistema troviate un contratto di supporto tecnico ma se siete a questo livello è improbabile che ne abbiate necessità. Si trat- ta dell’opzione “divertente”. Allo stesso modo in cui può essere divertente costruire la propria casa. An- drò a descrivere un server basato su Debian GNU/ Linux.

solutions

descrivere un server basato su Debian GNU/ Linux. solutions Installazione di base Si può scaricare un

Installazione di base

Si può scaricare un CD di installazione dal sito Web

Debian. Di solito opto per il CD NetInst. L’installer

di

Debian (al momento in cui scrivo) ha una familia-

re

interfaccia basata su ncurses con delle opzioni ab-

bastanza autoesplicative (si veda la Figura 2). Segui-

te le istruzioni e poi eseguite il reboot quando viene

richiesto.

Pacchetti

Una volta installato il sistema di base si possono

installare i pacchetti specifici necessari. L’installer mostra le collezioni di pacchetti destinati a compi-

ti particolari. La Figura 2 mostra questa schermata.

Ad esempio, la collezione “Web server” installerà apache2 e la collezione “file server” installerà Sam- ba. Ovviamente non si avrà bisogno della collezione “ambiente Desktop”. Si tratta di un sistema server e contrariamente a quanto certe aziende software riten- gono, l’esecuzione di una GUI è uno spreco di risor- se. Qualsiasi pacchetto non compreso in questa fase, come dhcp, può essere installato utilizzando apt-get da riga di comando. Nel mio caso, ho installato la distri- buzione “stabile” corrente. Naturalmente, volendo si può installare la distribuzione “di test”. Sconsiglio l’utilizzo di prodotti come la distribuzione “non sta- bile” di Debian su un server mission-centrico come questo.

Si noti che si possono avere particolari preferenze per

alcuni servizi: ad esempio, Procmail invece di Exim. Debian di solito dispone di entrambi i pacchetti ma ne fornisce alcuni come pacchetti di default. Non è questo il momento di aprire un dibattito sul perché delle determinate scelte che Debian ha fatto. Siete li- beri di iscrivervi alle mailing list di Debian se volete

prender parte a questo dibattito!

Se selezionato, l’installer vi aiuta a configurare il mail

server come è mostrato nella Figura 3. L’installer svol-

ge un buon lavoro nell’aiutarvi nelle impostazioni di

base con opzioni ben presentate.

FIGURA 3 La scelta dei pacchetti è agevole grazie alle collezioni
FIGURA 3 La scelta dei pacchetti è agevole grazie
alle collezioni

23

Login Internet Expert n.64 Maggio/Giugno 2007

solutions FIGURA 4 Non vi sarà alcuna GUI pertanto la configurazione avviene per mezzo di

solutions

FIGURA 4
FIGURA 4

Non vi sarà alcuna GUI pertanto la configurazione avviene per mezzo di un editor di testo basato sulla console. I pacchetti Debian hanno i file di configu- razione nella directory /etc in file con denominazione abbastanza ovvia. Ciò che non affronterò qui, per mo- tivi di spazio, sono le istruzioni dettagliate dell’esatta impostazione di ciascun pacchetto, pertanto mi limi- terò ad accennare le opzioni utilizzate per ciascun pacchetto laddove di solito differiscano dalla instal- lazione di default.

il proprio sistema e che l’aggiornamento

di una applicazione non richiedere alcun

tempo di fermo macchina del server. Si può, naturalmente, impostazione un job via cron per aggiornare il proprio sistema nottetempo ma forse una strategia più sicura è utilizzare l’opzione -d di apt che scaricherà gli aggiornamenti richiesti che potrete poi installare con comodo.

Opzione due: lasciare che se ne occupi qualcun altro

Talvolta non avete il tempo per un server

“fai da te” ed è in questi frangenti che en-

tra in gioco una distribuzione ad hoc. SME

Server si basa sul diffuso sistema di livello enterprise Cent OS. L’idea di una distribu- zione ad hoc è fornire tutto ciò che è necessario su un unico CD. Lo svantaggio di ciò è che si ha poca scel- ta sui pacchetti utilizzati. Deviare dalla installazione

standard è possibile ma, naturalmente, rende tutto più difficile quando in seguito è il momento di un fare l’upgrade. Aggiornare una distro personalizzata spesso richiederà il boot da un nuovo CD. Ciò richie- de un tempo di fermo macchina del server e quindi è meglio farlo fuori dalle normali ore lavorative.

Samba, installato come parte della collezione file ser- ver, imita essenzialmente un server Windows per ciò che concerne il fornire directory e stampanti condivi- se. I client Windows (e gli utenti in genere) restano in gran parte dimentichi del fatto che le directory con- divise non si trovano su un server Windows. Ciascu- na directory home di un utente e le stampanti CUPS vengono condivise per default. Oltre a ciò, di solito aggiungo una condivisione [public] (mappata su / home/public), una directory accessibile e che non ha restrizioni sugli utenti. Per le condivisioni si possono impostare le maschere dei permessi di default e per permessi specifici.

Installazione

L’installer di SME Server è un ulteriore software ba- sato su ncurses e vi guida con molto facilità attraverso ciascun passo. Il reboot del sistema, quando verrà ri- chiesto, vi conduce poi alla installazione dei pacchet- ti e alla impostazione del server. Al termine si ottiene un server funzionante pronto per l’impostazione dei dettagli, come utenti e condivisioni. L’intero proces- so ha richiesto circa mezzora. La Figura 4 mostra una delle ultime opzioni in cui si sceglie se la macchina funge solo da server o è anche un gateway e se si abi- lita il firewall.

Apache viene impostato con un unico sito. Il router/ firewall ADSL viene impostato per bloccare l’accesso in ingresso alla porta 80 in modo che solo i client pos- sano accedere al server Web. Se si vuole un sito Web pubblico sarebbe meglio ospitarlo su qualcosa di più stabile di una linea ADSL domestica.

Manutenzione

Mantenere il proprio server aggiornato è vitale se avete come priorità i problemi di sicurezza e i bug dei pacchetti. Debian fornisce un semplice metodo per fare ciò attraverso apt. apt aggiornerà i pacchetti installati, e il sistema operativo stesso, al volo ed è ne- cessario un reboot solo se si aggiorna il kernel o i mo- duli. Ciò significa che non si dovrà mai reinstallare

Configurazione

Delle due opzioni discusse, SME Server stravince in termini di facilità di configurazione. È fornito di una console di amministrazione, a cui si può accede- re attraverso una interfaccia Web locale, una conso- le basata su ncurses sul server, o via ssh. La Figura 5 mostra una tipica schermata dell’interfaccia Web. Da questa interfaccia si può configurare quasi tutto, il che la rende una scelta perfetta se si è meno a proprio agio con la riga di comando. Ciò detto, si è limitati alle scelte di configurazione decise dai maintainer di SME Server.

Il trasporto della posta viene gestito da qmail. È anche fornito fetchmail ed è facile impostare un “maildrop” da un unico account ISP. L’interfaccia Web fornisce

24

Login Internet Expert n.64 Maggio/Giugno 2007

solutions

solutions FIGURA 5 L’installer di SME Server. Non sembra familiare? anche un client “webmail”. SME Server
FIGURA 5 L’installer di SME Server. Non sembra familiare?
FIGURA 5 L’installer di SME Server. Non sembra familiare?

anche un client “webmail”. SME Server utilizza il concetto di i-bays che raddoppia l’accesso alle infor- mazioni sia attraverso la condivisione di cartelle sia attraverso le directory nella intranet. Ciò rende molto facile agli utenti rendere i file disponibili a vicenda via SMB o tramite la intranet. L’impostazione di sito Web è banale utilizzando la console di amministra- zione.

Sicurezza

L’accesso via SSH è disponibile nel SME Server ben- ché l’abilitazione dell’accesso da remoto alla console

di amministrazione abilita anche i login come utente

root. Questa particolare breccia può essere chiusa ma non attraverso la console di amministrazione; per- tanto, a meno di non essere pratici con la riga di co- mando suggerirei di lasciare disabilitati i login come amministratori. Se si effettuano le modifiche neces- sarie, siate poi pronti a prenderne nota o a effettuare un backup delle modifiche poiché in fase di aggiorna- mento potrebbero essere sovrascritte.

Backup

Per qualsiasi macchina un backup è vitale. E lo è an- cor più per un server in cui i dati sono abbondanti. Gran parte dei piani assicurativi e di continuità del- l’attività richiedono che i backup siano rimossi dai locali in cui si lavora. Esistono soluzioni di backup online che soddisfano ciò ma per un piccolo server come questo suggerirei che è più economico utilizza-

re supporti removibili come nastri o dischi ottici.

SME Server fornisce servizi di backup sia per i nastri (utilizzando flexbackup) sia verso un client desktop.

Vi è un limite massimo di 2 GB per i backup verso un

desktop e se si sta effettuando un backup su nastro accertatevi di utilizzare una uni- tà a nastro supportata. Flexbackup è anche un pacchetto Debian pertanto, volendo, si può installarlo sul server DIY. Esistono al- tre soluzioni, come Amanda. SME Server non supporta dispositivi ottici pertanto invece di utilizzare la soluzione di backup nativa siate pronti a scriverne una ad hoc. Personalmente, ricorro a un insieme di script che utilizzano tar che riciclo da ser- ver a server.

Conclusioni

Che si scelga una distribuzione ad hoc o si ricorra all’opzione “fai da te”, un server basato sul software free ha un tremendo vantaggio. Per prima cosa, si può esercita- re un controllo completo su ciascun pac- chetto utilizzato e su come viene imposta- to. Secondo, il server si evolverà secondo le vostre esigenze ma senza ulteriori contrasti con le licenze. E terzo, il livello di “uptime” dei server basa- to sul software free è, in base alla mia esperienza, ben più alto delle alternative proprietarie. I server non hanno le stesse necessità (ad esempio, una GUI, applicazioni audio o video) delle macchine desktop e quindi i le tradizionali motivazioni per non utilizzare il software free sono, a mio avviso, vanifica- te. Con un maggior controllo, una presumibilmente migliore sicurezza e nessuna preoccupazione circa le licenze, l’utilizzo di un server basato su software free potrebbe rivelarsi un miglior utilizzo del vostro tem- po, di risorse e di investimenti.

Risorse

Debian GNU/Linux http://www.debian.org/

Debian GNU/Linux NetInst CD download http://www.debian.org/CD/netinst/

SME Server http://www.smeserver.org/

SME Server community support http://contribs.org/

Samba http://www.samba.org/

Exim http://www.exim.org/

QMail http://www.qmail.org/

Fetchmail http://fetchmail.berlios.de/

Cups http://www.cups.org/

Apache http://www.apache.org/

Versione italiana pubblicata su licenza di The Open Company Partners

Note Biografiche

Note Biografiche
Note Biografiche Ryan Cartwright , è IT Manager presso la Contact a Family, un ente inglese
Note Biografiche Ryan Cartwright , è IT Manager presso la Contact a Family, un ente inglese
Ryan Cartwright , è IT Manager presso la Contact a Family, un ente inglese di

Ryan Cartwright, è IT Manager presso la Contact a Family, un ente inglese di assistenza alle famiglie con figli disabili in cui si fa un importante uso del software FLOSS (Free-License Open Source Software). Ryan è anche un sostenitore del FLOSS ed è iscritto alla mailing list GLLUG.

25

Login Internet Expert n.64 Maggio/Giugno 2007

solutions Backup della propria workstation con Backup Manager Salvarsi ogni giorno con i backup Il

solutions

Backup della propria workstation con Backup Manager

Salvarsi ogni giorno con i backup

Il backup è uno di quei compiti tediosi che

è necessario svolgere ma che di solito viene

relegato al termine della propria “to do list”. Backup Manager è un insieme di script Bash

e Perl che alleviano la noiosità di esecuzione

dei backup. Eliminando parte della comples- sità dei tool di backup e combinandone altri, Backup Manager introduce semplicità nel processo di backup. Una vista a livello più alto dei backup permette anche una più facile gestione degli archivi compresa la cosiddetta retention (ossia “conservazione”). In questo articolo è descritto un metodo per effettuare

il backup giornaliero di una workstation Li-

nux e per gestire questi backup.

Vista concettuale

Il concetto alla base di Backup Manager è

elegante (Figura 1): i backup o archivi ven- gono memorizzati in un repository. Il repo- sitory è una sottodirectory o preferibilmente una partizione dedicata per ospitare gli ar- chivi. Gli archivi vengono creati utilizzando

metodi di backup. Ci sono diversi metodi di backup, ciascuno definito da opzioni di con- figurazione note come chiavi. Queste chiavi vengono memorizzate in una o più file di

configurazione. Ciascun file di configurazio-

Ü di Ken Leyba

volte in contemporanea. Poiché Backup Ma- nager è uno strumento a riga di comando è semplice tempificare l’archiviazione con uno script Bash e con il comando cron.

Ci sono più tipi di metodi di backup utiliz-

zati da Backup Manager. I più comuni sono

detti metodi tarball, ossia archivi che vengo-

no creati con il comando tar. Il comando tar,

il cui nome deriva da “Tape ARchival”, crea

archivi che non necessariamente risiedono

su nastro e che spesso vengono memoriz-

zati su disco o su altri supporti removibili.

Questi tarball possono essere compressi con

differenti tipi di compressione: zip, gzip, dar

o bz2. Per risparmiare spazio su disco i tar-

ball possono anche utilizzare un metodo per creare backup completi e incrementali. Con

i backup incrementali, il Backup Manager

mantiene traccia dei file che sono stati mo- dificati e archivia solamente i file modificati, risparmiando così lo spazio necessario per la memorizzazione. Altri metodi comprendono la capacità di archiviazione in database My- SQL, in repository subversion e metodi gene-

rici personalizzabili.

La memorizzazione degli archivi sul sistema

ospite non è la strategia preferita di disaster

recovery. Ci sono diversi metodi che permet- tono la memorizzazione remota di archivi

ne

può definire il proprio repository, i propri

su

altri server o supporti removibili, come i

metodi di backup e altre opzioni. Più istanze

CD/DVD. I metodi di upload si basano su ftp,

di

Backup Manager possono essere eseguite

ssh, rsync e sull’utilizzo di Amazon Simple Sto-

in

parallelo, ciascuna con il proprio file di

rage Service (Amazon S3). Ciascuno di questi

configurazione, benché lo stesso file di con- figurazione non possa essere eseguito due

metodi, ad eccezione del metodo di masteriz- zazione, richiede un server di destinazione

26

Login Internet Expert n.64 Maggio/Giugno 2007

solutions

solutions FIGURA 1 Vista concettuale di Backup Manager con ulteriori servizi e una ulteriore configurazione. I
FIGURA 1 Vista concettuale di Backup Manager
FIGURA 1 Vista concettuale di Backup Manager

con ulteriori servizi e una ulteriore configurazione.

I server di destinazione accetteranno l’upload degli

archivi, una fase che è al di là degli scopi di questo articolo. Il metodo di masterizzazione, attualmente

il solo metodo di esportazione, trasferisce gli archivi

directory

/usr/share/backup-manager

installa il file di configurazione in

dal repository al supporto CD o DVD riscrivibile at- traverso l’utility cdrecord.

/etc/backup-manager.conf

installa le pagine man, il principale script eseguibile salvato come

Installazione e configurazione

Il sistema di esempio è Kubuntu Edgy che utilizza la versione 0.7.2 di Backup Manager. La versione 8.0 dovrebbe essere disponibile quanto prima, pertanto controllate il sito Web di Backup Manager per ulte- riori aggiornamenti. Poiché Backup Manager è un tool a riga di comando, l’installazione e l’utilizzo verranno eseguiti da riga di comando. L’installazio- ne avviene tramite il comando apt-get. Poiché ci sono alcune operazioni che devono essere eseguite come root e digitare sudo per ogni comando diventa noioso, operando come utente root farà risparmiare un po’ di digitazioni.

$ sudo su -

/usr/sbin/backup-manager

viene impostato uno script cron

/etc/cron.daily/backup-manager

e la documentazione viene posizionata in

/usr/share/doc/backup-manager

Il file di configurazione di default è ben organizza- to e documentato, tuttavia la lettura del documento User Guide fornisce una migliore comprensione delle chiavi e dei rispettivi valori. Per configurare i backup giornalieri e per l’impostazione del metodo di maste- rizzazione vengono apportate diverse modifiche alle chiavi nel file di configurazione di default. Utilizzan- do il proprio editor di testo preferito (ad esempio vi o nano), vengono modificate le seguenti chiavi. Il valo- re della chiave

BM_TARBALL_BLACKLIST

Password:

# apt-get install backup-manager backup-manager-doc

Per sistemi non basati su Ubuntu o Debian, con- trollate nei repository delle distribuzioni i pacchet- ti Backup Manager o procedete a installarlo a par- tire dal sorgente. Il tarball del sorgente comprende semplici istruzioni da seguire, descritte nel file IN- STALL. L’installazione posiziona diversi script nella

 

27

Login Internet Expert n.64 Maggio/Giugno 2007

solutions elenca le sottodirectory o i file che verranno esclusi dall’archiviazione. Nel mio caso, ho

solutions

elenca le sottodirectory o i file che verranno esclusi dall’archiviazione. Nel mio caso, ho effettuato il rip- ping di alcuni CD musicali pertanto ho escluso i file ogg dal backup utilizzando un carattere wildcard alla Bash. Le directory e le wildcard Bash vengono acco- date al valore della chiave e vengono delimitate da spazi.

BM_TARBALL_BLACKLIST=”/var/archives *.ogg”

viene utilizzata solo per creare gli archivi nella di-

rectory

/var/archives

Se questa directory non esiste verrà creata dopo la prima esecuzione:

# backup-manager --no-burn

La

chiave che rappresenta il numero di giorni per cui

Dopo una archiviazione con esito positivo utilizzan- do il metodo tarball, il file di log

un

archivio viene mantenuto è

BM_ARCHIVE_TTL

/var/log/messages

(ossia, “time to live” dell’archivio). Il valore di default

è 5 (giorni), pertanto bisogna modificare il valore a 7 per dei completi backup giornalieri.

BM_ARCHIVE_TTL=”7”

L’insieme successivo di chiavi è inerente al metodo di masterizzazione degli archivi di esportazione su sup- porto CD/DVD. Il valore

BM_BURNING_METHOD

viene impostato in base al tipo di supporto da ma- sterizzare. Nell’esempio che segue, viene utilizzato come supporto un CDR (un CD riscrivibile):

BM_BURNING_METHOD=”CDR”

BM_BURNING_DEVICE=”/dev/cdrw”

BM_BURNING_MAXSIZE=”700”

Altre opzioni comprendono DVD, CDRW e DVD- RW. Il dispositivo da utilizzare è impostato con la chiave

BM_BURNING_DEVICE

a cui si assegna il nome del dispositivo presente nel-

la directory /dev. Il valore finale è la dimensione del supporto utilizzato; per i supporti CDR i valori nor- malmente sono 650, 700 o 800. Nell’esempio prece-

dente viene utilizzato un supporto da 700 MB.

Test del backup

Le opzioni specificabili da riga di comando permet- tono metodi specifici che fanno parte del file di con- figurazione per l’esecuzione in modalità indipenden- te. Nel file di configurazione modificato due metodi vengono configurati: il metodo tarball e il metodo burn (masterizzazione). Utilizzando le opzioni a riga

di comando si può eseguire uno o l’ altro metodo.

Rimanendo come utente root l’opzione a riga di co- mando

--no-burn

28

Login Internet Expert n.64 Maggio/Giugno 2007

può essere esaminato per vedere quali messaggi sono stati generati. Il logging viene eseguito con la chia- ve BM_LOGGER impostata a “true” (il valore di default).

# tail /var/log/messages

Mar 5 15:37:08 host backup-manager[19432]: info \

* Getting lock for backup-manager 19432 with\

/etc/backup-manager.conf

Mar 5 15:37:08 host backup-manager[19432]: info \

* The repository /var/archives does not \

exist, creating it.

Mar 5 15:37:08 host backup-manager[19432]: info \

* Cleaning /var/archives

Mar 5 15:37:08 host backup-manager[19432]: info \

* Using method “tarball”

Il test successivo è la masterizzazione del repository

sul supporto CD/DVD. Ciò viene eseguito anche con una opzione a riga di comando per l’esecuzione del

solo metodo burn. Quando viene richiesto il nuovo supporto basta premere il tasto “Invio”. Se gli archi-

vi superano la capacità di un singolo supporto appa-

rirà una richiesta di inserire un ulteriore supporto

vuoto. Se la dimensione del repository è maggiore della capacità di un singolo supporto, l’esecuzione

di un metodo di masterizzazione interattivo permet-

terà l’utilizzo di ulteriori supporti. Se il metodo di “burn” viene eseguito in modalità non interattiva, ad esempio attraverso uno script cron, Backup Manager

cercherà prima di masterizzare l’intero repository. Se

il repository è maggiore della capacità del supporto,

verrà tentata la scrittura dell’archivio creato lo stesso giorno. Se anche l’archivio del giorno è maggiore del supporto, allora non viene eseguito alcun metodo di masterizzazione.

# backup-manager --burn

Please insert a new media in /dev/cdrw

Al solito, il processo può essere verificato esaminan- do il file di log dei messaggi.

# tail /var/log/messages

Mar 5 15:46:39 host backup-manager[24927]: info \

* Getting lock for backup-manager 24927 with\

/etc/backup-manager.conf

Mar 5 15:46:39 host backup-manager[24927]: info \

* Burning the whole archives.

Mar 5 15:46:39 host backup-manager[24927]: info \

* Number of files to burn: 3.

Mar 5 15:46:39 host backup-manager[24927]: info \

* Trying to burn /var/archives (242 MB) in \

interactive mode.

Mar 5 15:46:40 host backup-manager[24927]: info \

* The burning process will need 1 media(s).

Mar 5 15:46:40 host backup-manager[24927]: info \

* Burning content of \

/var/archives/index-20070305-1

Mar 5 15:46:43 host backup-manager[24927]: info \

* Redirecting burning logs into \

/tmp/bm-burning.log.V25664

Mar 5 15:46:43 host backup-manager[24927]: info \

* Burning data to /dev/cdrw.

Mar 5 15:48:59 host backup-manager[24927]: info \

* Releasing lock

Quando vengono creati gli archivi viene generato un valore di controllo MD5. Una ulteriore opzione a riga

di comando confronterà il valore MD5 generato con

quello che è stato scritto nel CD.

# backup-manager --md5check

Checking MD5 sum for host-20070305.md5: ok

Checking MD5 sum for host-etc.20070305.tar.gz: ok

Checking MD5 sum for host-home.20070305.tar.gz: ok

Archive given does not exist in the repository: \

/var/archives/index-20070305-1

Si noti che il file di indice viene creato durante il me-

todo burn e non fa parte del repository, perciò viene visualizzato un messaggio ad indicare ciò. Un metodo alternativo per il controllo dei valori MD5 (comodo per verificare i supporti esportati su sistemi su cui non è installato Backup Manager) è utilizzare diretta- mente il comando md5sum:

$ cd /media/cdrom

$ ls

host-20070305.md5 host-etc.20070305.tar.gz \

host-home.20070305.tar.gz index-20070305-1

$ md5sum -c host-20070305.md5

host-etc.20070305.tar.gz: OK

host-home.20070305.tar.gz: OK

Interventi finali

Per completare la configurazione dell’archivio della

workstation, viene modificato il job daily del coman-

do cron per impedire che il metodo burn sia eseguito

giornalmente con l’opzione a riga di comando --no- burn.

#!/bin/sh

# cron script for backup-manager

test -x /usr/sbin/backup-manager || exit 0

# Add the --no-burn option

/usr/sbin/backup-manager --no-burn

solutions

option /usr/sbin/backup-manager --no-burn solutions Abbiamo così configurato dei completi archivi gior- nalieri

Abbiamo così configurato dei completi archivi gior- nalieri e l’esportazione degli archivi su supporti CDR viene eseguita in modalità interattiva. L’esportazione deve avvenire come utente root: gli utenti Ubuntu possono ricorrere al comando sudo. Una chiave inte- ressante è la

BM_ARCHIVE_PURGEDUMPS

che, se impostata al valore di default “true”, creerà un link simbolico all’archivio del giorno precedente

se nessun file è stato modificato. Ciò farà risparmiare

spazio di memorizzazione evitando di creare archivi duplicati per giorni consecutivi. Cosa viene archivia- to? La chiave

BM_TARBALL_DIRECTORIES

per default, archivia le directory /etc e /home, archi- viando, rispettivamente i file di configurazione della workstation e i dati degli utenti. La chiave

BM_REPOSITORY_ROOT

definisce la posizione del repository. Il repository di default è

/var/archives

che, in teoria, è una partizione abbastanza grande da contenere gli archivi di una intera settimana.

Conclusioni

Backup Manager, per come è configurato qui, è una tecnica semplice e trasparente di creazione di archi-

vi su una workstation GNU/Linux. Celando i detta-

gli del comando tar e di cdrecord e automatizzando i backup giornalieri assicura un maggior senso di protezione dei dati. L’esportazione manuale degli archivi su supporti removibili permette ai dati di essere archiviati e memorizzati in una ubicazione esterna sicura in caso di interventi di “disaster reco- very”. Al di là del backup di una singola workstation, Backup Manager ha anche la capacità di archiviare dati dai server e dai database e di automatizzare la memorizzazione in remoto del repository.

Versione italiana su licenza di The Open Mind Com- pany.

Note Biografiche

Note Biografiche
Note Biografiche Ken Leyba , lavora nel settore IT sin dai primi anni 1980, prima come
Note Biografiche Ken Leyba , lavora nel settore IT sin dai primi anni 1980, prima come
Ken Leyba , lavora nel settore IT sin dai primi anni 1980, prima come tecnico

Ken Leyba, lavora nel settore IT sin dai primi anni 1980, prima come tecnico hardware (con accanto l’immancabile oscilloscopio), e attualmente come amministratore di sistemi. Dovendo supportare sia Windows sia Linux, Windows lo mantiene costantemente impegnato mentre Linux rende piacevole il suo lavoro.

29

Login Internet Expert n.64 Maggio/Giugno 2007

cutting edge

cutting edge Programmazione veloce con Rexx Facilità di utilizzo e potenza possono coesistere Ü di Howard

Programmazione veloce con Rexx

Facilità di utilizzo e potenza possono coesistere

Ü di Howard Fosdick

Mai desiderato scrivere codice rapidamente? Si può scrivere codice in Rexx come se fosse acqua, ma tuttavia è codice potente. Ecco tut- to ciò che è necessario per partire, studiando esempi reali di programmazione.

Script di successo

Un aspetto magico del movimento del sof- tware free è la quantità di linguaggi di pro- grammazione disponibili. Tra questi ci sono i linguaggi di scripting, linguaggi concepiti per una programmazione altamente produt- tiva, o “scripting”.

Ben noti linguaggi free di scripting com- prendono Perl, Python, Tcl/Tk, Ruby, Bash, Korn e altri. Vi è una certa varietà poiché ciascun linguaggio offre una propria combi- nazione unica di punti di forza, e di proprie caratteristiche. Linguaggi differenti soddi- sfano differenti necessità.

Questo articolo presenta uno dei primi lin- guaggi di scripting, che continua ad essere noto ovununque. Rexx inizialmente si fece

notare come linguaggio di scripting dei si- stemi operativi per mainframe IBM, Ami- ga, OS/2 e altri sistemi. Oggi nove interpreti Rexx free vengono eseguiti su qualsiasi piat-

taforma, dai telefoni e i portatili, ai laptop e

ai PC, fino ai server e ai mainframe. Natural-

mente, sono compresi sistemi operativi come GNU/Linux, Windows e Unix.

La grande attrazione di Rexx è che è potente e al contempo facile da utilizzare. Molti lin- guaggi promettono ciò, ma pochi la manten- gono. Esiste un compromesso naturale tra potenza e facilità di utilizzo: più è la potenza che i progettisti iniettano in un linguaggio, più quel linguaggio diventa complesso.

Rexx impiega tecniche specifiche per imbri- gliare la potenza pur conservando la facilità

di utilizzo:

Sintassi minimale

Poche regole limitano il codice (la cosid- detta formattazione “free”)

Un comportamento consistente e affida- bile

Assunzioni di default dettate dal buon

Login Internet Expert n.64 Maggio/Giugno 2007

31

cutting edge TABELLA 1 Interpreti Rexx “classici” free Interprete Piattaforma Note Regina Pressoché

cutting edge

TABELLA 1 Interpreti Rexx “classici” free

Interprete

Piattaforma

Note

Regina

Pressoché tutte le piattaforme

Portabile, standard, diffuso

Reginald

Windows

Eccellente integrazione con Windows

r4

Windows

Comprende molti utili tool Windows

Rexx/imc

Linux, Unix, BSD

Implementazione riferimento di settore, documentazione buona e concisa, disponibilità di tutorial

BRexx

Gran parte delle piattaforme

Il Rexx più veloce, poca occupazione di memoria, leggero

Rexx for Palm OS

Palm OS

Integrazione con Palm OS, interfaccia a caratteri

senso (per semplicità) che possono essere facil- mente ridefinite (per una maggiore potenza)

Un insieme molto piccolo di istruzioni che si può apprendere immediatamente, circondato da più estese e potente librerie di funzioni e di oggetto che si possono apprendere nel tempo

Estensibilità del linguaggio attraverso librerie add-in di funzioni e classi. I moduli esterni si uti- lizzano nello stesso modo con cui si accede alle ca- ratteristiche native del linguaggio

Modulare e strutturato

Standardizzato

Personalmente, sono un forte sostenitore dei linguag- gi “facili”, purché continuino a soddisfare le mie necessità di potenza. Un linguaggio con cui è facile scrivere codice significa una più alta produttività. Si può scrivere uno script rapidamente. Grazie al design modulare, posso scrivere tonnellate di piccole routi- ne e far evolvere una grossa applicazione in un batter d’occhio.

I linguaggi semplici portano a meno errori. Meno er- rori producono un codice più affidabile.

I programmi sono veloci da sottoporre al debug. E

sono più facili da manutenere e aggiornare man mano che evolvono le necessità. Ciò è particolarmente vero con grossi programmi.

Avete mai dovuto mantenere il codice scritto da qual- cun altro in un linguaggio regolato dalla sintassi? Può essere arduo, particolarmente per programmi grossi o non documentati. Molti linguaggi complessi sono molto potenti, ma i programmi così scritti sono difficili da migliorare e manutenere. Gli script scritti con “linguaggi facili” come Rexx possono essere mo- dificati molto più facilmente. Man mano che il codice cresce e muta e deve essere aggiornato, i programmi scritti con linguaggi più semplici hanno una maggio- re vita rispetto a quelli codificati con linguaggi poten- ti ma complessi.

32

Login Internet Expert n.64 Maggio/Giugno 2007

Linguaggi semplici comportano grandi vantaggi, anche per gli sviluppatori esperti. Mentre alcuni considerano sia da “macho” lavorare con linguaggi potenti e complessi, i migliori sviluppatori sono esa- geratamente produttivi con i linguaggi più semplici.

Scrivono script alla velocità con cui pensano. Inoltre,

le aziende per cui lavorano preferiscono la manuteni-

bilità di questi linguaggi. Le aziende vogliono codice duraturo, codice che può adattarsi ed essere alterato.

Il codice complesso non conserva valore una volta

che chi lo ha scritto “lascia l’edificio”.

Varietà di Rexx

Sono disponibili nove interpreti Rexx free e ricadono

in due categorie generali:

1. Rexx procedurale o “classico”

2. a oggetti

La Tabella 1 e la Tabella 2 elencano gli interpreti Rexx, le piattaforme su cui vengono eseguiti, e alcuni dei principali vantaggi. Tutti gli interpreti soddisfa- no gli standard Rexx (eccetto NetRexx, concepito per l’integrazione con Java). Ciò significa che il proprio codice è portabile su piattaforme diverse. Attenete-

vi agli standard del linguaggio (e limitate i comandi

specifici del sistema operativo che invocate dal codi-

ce) e il vostro codice viene eseguito ovunque. Anche

la vostra conoscenza è trasportabile, sia tra piattafor-

me differenti sia tra differenti interpreti Rexx.

I primi due interpreti Rexx a oggetti elencati nella

Tabella 2 sono dei veri e propri sovrainsiemi degli

standard del classico Rexx. Introducono un comple-

to paradigma a oggetti allo standard Rexx. Ciò com-

prende oggetti, classi, messaggi, ereditarietà singola

e multipla, “data hiding”, polimorfismo, librerie di

classi, e tutti i vantaggi della programmazione a og- getti. Poiché questi interpreti rispettano gli standard Rexx, i programmi scritti in Rexx “classico” vengono eseguiti immutati con un interprete Rexx a oggetti.

Questa compatibilità permette sia il trasporto dei vecchi programmi procedurali nel mondo a oggetti,

sia di decidere se il programmare utilizzando o meno

degli oggetti. Si può mescolare codice procedurale e codice a oggetti a proprio piacimento.

NetRexx è un caso a sé. Non è un Rexx standard ma è un linguaggio “simil-Rexx”. Progettato per l’inte- grazione con Java, viene eseguito su qualsiasi Java Virtual Machine. Può utilizzare oggetti Java ed esse-

re utilizzato per creare oggetti utilizzati da program-

mi Java. Offre un modo facile per scrivere codice per

l’ambiente Java.

Si può scaricare uno degli interpreti Rexx dal sito

Rexx. Il sito Web offre anche centinaia di tool add-in gratuiti, e librerie di funzioni e di oggetto per Rexx, e

anche codice di esempio.

Un programma di esempio

cutting edge

codice di esempio. Un programma di esempio cutting edge dai caratteri non stampabili (indicatori di lunghez-

dai caratteri non stampabili (indicatori di lunghez- za? flag? separatori di campo? Sul Web ho trovato un programma gratuito, “ForMorph Message Conver- ter”, che esporta le vecchie informazioni Compuser-

ve, ma non avevo mai decodificato il formato dei file “addrbook.dat”). Ho deciso allora di scrivere rapidamente un program- ma Rexx per eseguire il dump delle informazioni del-

la rubrica in formato leggibile. Per questa soluzione

ho utilizzato Rexx classico (procedurale). Per prima cosa, ho scritto un rapido script solo per eseguire il dump del file sullo schermo come carat-

teri stampabili. Ciò ha significato tradurre i caratte-

ri non stampabili nell’equivalente esadecimale. Ho

quindi potuto vedere ciò che effettivamente c’era nei file delle rubriche. Ad esempio, ho potuto confronta-

re i caratteri esadecimali stampati con la mappa dei

caratteri disponibile su Windows (visualizzabile da Start/Programs/Accessori/Mappa dei caratteri). Ciò mi ha rapidamente mostrato quali erano i caratteri non stampabili presenti nel file.

Ecco un esempio reale di quanto un rapido scripting può essere utile. L’altro giorno ero alle prese con una dozzina di vecchi computer desktop Windows su cui

L’elenco che segue mostra come appare l’output del programma. Ciascuna riga rappresenta un carattere del file di input. Ciascuna riga mostra un carattere

erano in esecuzione differenti versioni del software Compuserve (per chi non ricorda i bei giorni andati

unitamente all’equivalente esadecimale, immediata- mente a destra. Si può vedere che la lettera “p” è “70”

delle connessioni dial-up di un decennio fa, Compu-

in

esadecimale, che lo spazio “ ” è “20” in esadecimale

serve era un’azienda di punta di servizi email e di ac- cesso a Internet).

che ci sono alcuni caratteri misteriosi il cui valore esadecimale è “00” che non vengono affatto mostra-

e

Il mio compito era di recuperare in qualche modo i

ti

sullo schermo. Solo attraverso questo rapido dump

contatti dalle “rubriche degli indirizzi” memorizza-

sono stato in grado di distinguere nel file tra i carat-

te nel software Compuserve. Ho eseguito il login su alcune delle vecchie macchine e ho rapidamente de-

teri spazio (20 esadecimale) e i caratteri con valore esadecimale “00”.

terminato che eseguivano un vecchio software Com- puserve che andava dalla versione 5 fino ad arretrare

Questo file in particolare era corrotto ma ero ancora

alla versione 2.

in

grado di visualizzarne il contenuto. A questo pun-

Queste versioni di Compuserve salvavano tutte la

to

avvevo un’idea migliore di ciò che questi file rubri-

rubrica degli indirizzi in un unico file denominato

ca

contenevano.

“addrbook.dat”. La difficoltà è che le informazioni in questo file sono codificate in un formato proprietario.

p

70

Visualizzandolo con Notepad di Windows si posso-

a

61

no

vedere le informazioni dei contatti, ma è difficile

g

67

da

leggere poiché il file è inframezzato da tonnellate

e

65

di

caratteri non stampabili e di miscellanea. Poiché

20

non conoscevo il formato della rubrica di Compuser-

ve, potevo solo supporre il significato rappresentato

N 4E

® AE

TABELLA 2 Interpreti Rexx free a oggetti

Interprete

Piattaforma

Note

Open Object Rexx

Linux, Unix, Windows

Pieno supporto OOP, download molto popolare su SourceForge

roo!

Windows

Pieno supporto OOP, comprende utili tool Windows

NetRexx

Qualsiasi Java Virtual Machine

Non standard. Si integra con Java, fornisce una facile alternativa di codifica

33

Login Internet Expert n.64 Maggio/Giugno 2007

cutting edge FIGURA 1 Visualizzazione dell’output del programma A 41 . 2E ® AE •

cutting edge

FIGURA 1 Visualizzazione dell’output del programma
FIGURA 1 Visualizzazione dell’output del programma

A 41

. 2E

® AE

Sintassi minima

Regole minime di codifica e nessuna formattazio- ne richiesta

00

Nessuna sezione di programma obbligatoria

00

Rexx apre e chiude automaticamente i file

N

4E

Le variabili non devono essere dichiarate prima dell’utilizzo

Diamo un’occhiata al codice che prodotto questo ve- loce “dump esadecimale”:

/**************************************************/

Mostra a video il contenuto del file come caratteri esadecimali */

/*

/**************************************************/

infile = ‘addrbook.dat’

/* Il file di input */

do while chars(infile)

> 0 /* Legge il file di input, */

inbyte = charin(infile,,1) /* carattere per carattere */

say inbyte

c2x(inbyte)

/* Visualizza ciascun carattere */

end

Nel codice, la prima riga dopo i commenti intro-

duttivi imposta una variabile con il nome del file di input.

Il ciclo do while applica al file di input la funzione

Rexx nativa chars. L’effetto è processare il file fin-

ché ci sono ancora caratteri da leggere. Nel ciclo do while, la funzione charin legge un carattere dal file di input nella variabile denominata inbyte. La fun- zione c2x converte questo carattere nell’equivalente esadecimale, mentre la funzione say lo visualizza a schermo. In questo modo, il programma processa il

file di input, un carattere per volta, e lo visualizza sul-

Una principio importante è qui evidente. Le carat-

teristiche descritte negli ultimi due punti rappresen- tano dei buoni default ma possono essere facilmente ridefiniti: questa è una tecnica che Rexx impiega per

far sì che la semplicità coesista con la potenza.

Ad esempio, si vuole ridefinire il comportamento

di default di Rexx per i file e aprire o chiudere ma-

nualmente un file? Nessun problema, Rexx fornisce

la funzione stream per questo scopo. Utilizzatela per

specificare qualsiasi tipo di elaborazione su file vi ser-

va. Lo stesso dicasi per le variabili: si possono dichia- rarle prima dell’utilizzo e anche inviare un comando che richiede che tutte le variabili siano inizializzate prima dell’utilizzo (utile nei grossi programmi dove non si vogliono permettere variabili non inizializzate

e errori di digitazione che accidentalmente diventano

variabili). Rexx è ideale per uno scripting rapido ma tuttavia permette di scrivere programmi potenti. Ciò

è vitale perché non vi è nulla di più scoraggiante che utilizzare un linguaggio di programmazione semplice solo per poi ritrovarsi a corto di potenza.

Un programma migliorato

Andiamo ora a espandere il programma d’esempio in qualcosa di più utile. Questa versione crea una versio-

ne

leggibile del file di input e la visualizza all’utente

in

Windows Notepad.

Questo script è un generico “visualizzatore di file”. Converte qualsiasi file di input binario che contiene

lo

schermo in notazione esadecimale.

del testo in una forma più leggibile e poi visualizza il testo all’utente.

Si

può capire perché Rexx è veloce da scrivere da que-

La

Figura 1 mostra come appare l’output della prima

sto esempio di frammento di codice:

34

Login Internet Expert n.64 Maggio/Giugno 2007

parte del programma.

I nomi e gli indirizzi email sono stati alterati per ra- gioni di privacy, ma si può vedere che il programma rende le informazioni significative facilmente leggi- bili a partire dal file di input originale difficile da leggere.

Per poter creare una versione accurata e visualizzabi- le dell’input, il programma maschera tutti i caratte- ri non stampabili e di punteggiatura, convertendo il tutto in spazi. Lo script lascia immutate solo le lettere maiuscole e minuscole, le cifre da 0 a 9, e cinque ca- ratteri di punteggiatura significativi: virgola, sottoli- neato, due punti, punto e il simbolo “at” (@). Ecco il codice:

/**************************************************/ /* Visualizza le informazioni visualizzabili di un file di input. */

/* Scrive i caratteri stampabili in un file, modificando i caratteri */

/* non stampabili e la punteggiatura non comune in spazi. */

/* Permette all’utente di visualizzare il file con Windows Notepad. */

/**************************************************/

infile = ‘addrbook.dat’

/* Il file di input */

outfile = ‘addrbooklist.txt’

/* Il file di output */

erase outfile

/* Cancella l’output precedente */

do while chars(infile) > 0 /* Legge il file di input, */

cutting edge

> 0 /* Legge il file di input, */ cutting edge pabili nel file di output

pabili nel file di output convertendo qualsiasi caratte- re non stampabile o di miscellanea in spazio. L’effetto è un file “ripulito” facilmente leggibile.

L’effetto è un file “ripulito” facilmente leggibile. R exx è uno dei primi linguaggi di scrip-

Rexx è uno dei primi linguaggi di scrip- ting, noto per le sue caratteristiche di potenza e facilità di utilizzo

le sue caratteristiche di potenza e facilità di utilizzo Come si può vedere, l’istruzione if controlla

Come si può vedere, l’istruzione if controlla certi in- tervalli di caratteri esadecimali che lascia immutati. I caratteri esadecimali vengono denotati dal suffisso x, ad esempio

‘5f’x

rappresenta in esadecimale il carattere sottolineato. Rexx gestisce tutti i tipi di stringhe: carattere, alfanu- merica, numerica, binaria, esadecimale, a lunghezza fissa e a lunghezza variabile, di qualsiasi sorta. Rexx facilita il problem-solving per mezzo dell’elaborazio- ne delle stringhe.

inbyte = charin(infile,,1) /* carattere per carattere */

In Rexx il carattere di continuazione della riga è la virgola (,) pertanto le virgole collegano assieme l’istruzione if in cui codificata su più righe. L’ope- razione di and logico si denota con il carattere “&” mentre Rexx utilizza la barra verticale (|) per rappre- sentare un or logico. In questo programma, ho uti- lizzato una unica lunga istruzione if per determinare quali caratteri esadecimali mantenere per maggiore chiarezza. Ma in alternativa avrei potuto utilizzare la funzionalità di parsing di Rexx, la traduzione delle stringhe, o le espressioni regolari per eseguire le tra- duzioni dei byte. (le espressioni regolari non fanno parte del linguaggio base ma vengono utilizzate abi- tualmente essendo fornite da diversi pacchetti add-in free).

 

/* Converte l’input carattere per carattere in testo leggibile */

 

if

(inbyte >= ‘30’x

&

inbyte

<= ‘5a’x)

|

,

 

(inbyte >= ‘61’x

&

inbyte

<= ‘7a’x)

|

,

 

(inbyte = ‘2c’x)

|

(inbyte

= ‘5f’x)

|

,

 

(inbyte = ‘2e’x)

then

rc = charout(outfile,inbyte) /* Scrive i caratteri utili */

else

 

/* nel file di output, */

rc = charout(outfile,’ ‘) /* converte gli altri in spazi */

end

rc = charout(outfile)

/* Chiude il file di output */

notepad outfile /* Permette all’utente di visualizzare l’output */

Il cuore del programma è l’istruzione if nel mezzo dello script. Questa istruzione scrive i caratteri stam-

Lo script utilizza la funzione charout per scrivere sin- goli caratteri nel file di output. Ho scritto charout a destra di un’assegnazione in modo che il codice che restituisce venga assegnato alla variabile rc. In un pro- gramma più robusto andrebbero sempre controllati i valori di ritorno di eventi come la scrittura su file. Si può sempre controllare se o come ha funzionato una funzione Rexx attraverso il valore di ritorno.

35

Login Internet Expert n.64 Maggio/Giugno 2007

cutting edge TABELLA 3 Funzioni stringa Rexx utilizzate nel programma di esempio Funzione Descrizione pos

cutting edge

TABELLA 3 Funzioni stringa Rexx utilizzate nel programma di esempio

Funzione

Descrizione

pos

Restituisce la posizione iniziale di una stringa da ricercare in una seconda stringa

substr

Restituisce una sottostringa di una stringa

delstr

Elimina parte di una stringa

reverse

Inverte i caratteri in una stringa

word

Restituisce una parola delimitata da spazi da una stringa

left

Giustificazione a sinistra di una stringa

L’ultima riga del programma invoca Windows No- tepad per permettere all’utente di visualizzare facil-

tivo iniziale. Ecco un output di esempio:

mente il file di output. Si può vedere come è facile in-

Abbitona, Kirk

kabbitona@aol.com

viare dei comando al sistema operativo da uno script

Acie, Bobbie

bobbie.acie@WayIndustries.com

Rexx: basta scriverli! Qualsiasi istruzione che Rexx

Ackermann, Jennifer

non comprende la invia al sistema operativo per farla

jennifer.ackermann@amerilabs.com

eseguire. Pertanto è molto facile integrare i comandi

Adams, Jason

jason@worldtravel.com

di

sistema operativo nei programmi Rexx, o utilizza-

Adams, Sam

sadams44@killerapps.com

re

Rexx come “driver” per l’automazione dei sistemi.

Adleman, Thomas

thomas.adleman@fixit.com

Come dimostra questo esempio, basarsi sui comandi e sui servizi esistenti del SO è altamente efficiente dal punto di vista del codice.

Un ulteriore esempio di comando del SO è presente verso l’inizio del programma dove il comando Win- dows erase elimina il file di output di una precedente esecuzione del programma. Rexx passa l’esecuzione del comando erase a Windows dopo aver sostituito il valore opportuno della variabile outfile. Rexx forni- sce ai programmatori il completo controllo su questa sostituzione: grazie alle possibilità di manipolazione delle stringhe in Rexx, viene fornita una enorme po- tenza nell’invio di comandi del SO. Si possono creare

Ecco il codice che crea questo elenco:

/**************************************************/ /* Visualizza nomi e indirizzi email da una vecchia */

/* rubrica Compuserve. */

/**************************************************/

string = linein(‘addrbooklist.txt’) /* Legge il file di input */

do while pos(‘INTERNET:’, string) > 0 /* Processa ogni voce */

da

programma comandi del SO dagli script ed esegui-

/* Trova l’inizio e la fine del prossimo indirizzo email */

re

facilmente il parsing e analizzarne l’output.

 

pos_email_start = pos(‘INTERNET:’, string)

Terminare il lavoro

Lo scripting si presta a risolvere rapidamente parti di un problema con brevi script. Mettete assieme i pic- coli script e avrete una soluzione completa. I servizi

di pipe di sistemi operativi come GNU/Linux o Win-

pos_email_end

= pos(‘.com’, string) + 4

/* Calcola la lunghezza dell’indirizzo email e lo estrae */

length_email = pos_email_end - pos_email_start

dows possono collegare assieme i vostri brevi script

email

= substr(string, pos_email_start, length_email)

in

una soluzione completa. Perché scrivere un grosso

programma complicato? Con un facile linguaggio di scripting non è necessario progettare tutta la logica della soluzione completa prima di partire. Basta partire in piccolo e costruire man mano.

email

= delstr(email,1,9) /* Rimuove ‘INTERNET’ */

 

/* Estrae e cognome e nome

*/

Ciò detto, il passo finale della soluzione è trattare l’output del precedente programma come input a questo nuovo programma, che poi estrae ed elenca i nomi e gli indirizzi email. Era questo il nostro obiet-

36

Login Internet Expert n.64 Maggio/Giugno 2007

name_etc

= substr(string, 1,

pos_email_start-1)

name_etc

= reverse(name_etc)

name

= word(name_etc,2) || ‘ ,’ ||

cutting edge

cutting edge word(name_etc,1) Conclusioni name = reverse(name) name = left(name,20) /* giustificazione a

word(name_etc,1)

Conclusioni

name

= reverse(name)

name

= left(name,20) /* giustificazione a sinistra */

Avrete visto quanto è facile scrivere brevi script per risolvere piccoli problemi, per poi collegarli assieme per risolvere un problema più vasto. Sarebbe sempli- ce migliorare questi script per gestire casi speciali nei dati di input (ad esempio, indirizzi email che non ini- ziano con la stringa “INTERNET:” o che non termi- nano con il suffisso “.com”). Rexx è ideale per questo tipo di programmazione iterativa, così come lo sono altri linguaggi di scripting “facili”.

 
 

say

name email /* Visualizza nome e indirizzo email */

 

string = substr(string, pos_email_end) /* Adatta la stringa */

end

Ecco come funziona questo programma. Lo script legge l’intero file di output del programma prece- dente in un’unica istruzione utilizzando la funzione linein (si tenga presente che non vi sarà alcun marca- tore di “fine riga” nel file poiché il programma pre- cedente li ha convertiti in spazi). Il programma mette questo input nella variabile string.

Ma Rexx è potente? Se ancora non ne siete convin-

ti potete leggere l’articolo [1] che mostra come Rexx

supporti ogni tipo di strutture dati, basandosi su una

semplice notazione “punto”. In Rexx, la “dot notation” può rappresenta array, alberi, strutture, record, liste

e altre strutture dati. Pertanto si crea ogni sorta di strutture dati nello stesso, semplice, modo, come in questi due esempi:

struttura_dati.1

Poi il programma processa ciascun nome e indirizzo email nella stringa di input, uno alla volta, attraverso il ciclo do while. Ogni volta, attraverso questo ciclo, lo script separa nome, cognome e indrizzo email di una voce della rubrica. Lo fa individuando la strin- ga “INTERNET:” presente prima di ciascun indi- rizzo email, e individuando anche la stringa “.com” al termine dell’indirizzo email. Il codice esclude i “commenti” opzionali associati ad alcune voci. Poi lo script accorcia la stringa da processare eliminazione la voce che ha appena stampato, e ritorna all’inizio del ciclo do while per processare la voce successivo della rubrica. Il programma utilizza diverse funzioni di manipola- zione stringhe di Rexx (Tabella 3) per identificare e isolare le informazioni dalla stringa di input.

Non mi dilungherò a descrivere l’intero codice di esempio, poiché i commenti sono sufficienti per per- mettervi di interpretare il codice. Tuttavia, una tec- nica che vorrei far notare è l’utilizzo della funzione reverse. Le tre parti di ciascuna voce di rubrica sono:

il nome completo, l’indirizzo email e i commenti opzionali. Dopo l’esecuzione di un passo del ciclo do while, il programma identifica e estrae il prossimo nome e indirizzo email dalla stringa di input. Se la voce contiene commenti opzionali, questi vengono lasciati nella stringa di input quando lo script pro- cessa la voce successiva. Pertanto, lo script utilizza la funzione reverse per invertire l’ordine dei caratte- ri dei commenti e del nome. Quindi con il nome che a questo punto si trova prima nella stringa di input, lo script può facilmente estrarre questa informazione utilizzando la funzione word (una prima volta per re- cuperare il cognome e una seconda volta per recupe- rare il nome). Dopo che lo script ottiene nome e co- gnome, utilizza la funzione reverse un’ultima volta per ordinare opportunamente i caratteri dei nomi.

o

structure_dati.variabile_A.variabile_B

Confrontate questo tipo di notazione ai linguaggi “syntax-driven”, in cui ciascuna struttura dati ag- giunge una propria univoca sintassi al linguaggio. I linguaggi potenti che introducono una sintassi per ciascuna struttura dati differente tipicamente pro- ducono una sintassi abbastanza complessa e infles-

sibile. Entrambi gli approcci svolgono lo stesso lavoro. Qua-

le è più facile? Questa è la filosofia di Rexx. La poten-

za attraverso la semplicità!

Risorse

[1] Fosdick, H. “The Power of Associative Arrays”, Dr Dobb’s Portal, http://www.ddj.com/dept/

lightlang/191101933

Riferimenti

RexxInfo.org - www.rexxinfo.org Rexx Language Association - www.rexxla.org Progetto Open Object Rexx - www.oorexx.org

Versione italiana pubblicata su licenza di The Open Mind Company

Note Biografiche

Note Biografiche
Note Biografiche Howard Fosdick , è un consulente DBA indipendente autore del primo libro sullo scripting
Note Biografiche Howard Fosdick , è un consulente DBA indipendente autore del primo libro sullo scripting
Howard Fosdick , è un consulente DBA indipendente autore del primo libro sullo scripting Rexx

Howard Fosdick, è un consulente DBA indipendente autore del primo libro sullo scripting Rexx free e open source: “ The Rexx Programmer’s Reference”. Scrive frequentemente documenti tecnici ed è presente come speaker in varie conferenze. I suoi interessi principali sono i database, i sistemi operativi e le tecnologie di scripting.

37

Login Internet Expert n.64 Maggio/Giugno 2007

cutting edge

cutting edge Diagrammazione desktop con Dia e Kivio Sposta quella clipart! Non fatevi trarre in inganno

Diagrammazione desktop con Dia e Kivio

Sposta quella clipart!

Non fatevi trarre in inganno dalla semplicità

di utilizzo. Sia Kivio sia Dia, due strumenti

software free di diagrammazione, sono molto

efficienti in ciò che fanno. Se è necessario di- segnare una complesso diagramma flowchart

o per creare agevolmente un diagramma

UML potreste fare la scelta giusta optando per uno di questi pacchetti. I due tool offro-

no il 90% delle funzionalità previste con solo

il 10% di scontri e lotte che offrono i tool pro- prietari di diagrammazione ben più comples-

si e inutilmente ricchi di caratteristiche. La

curva di apprendimento è breve e il risultato finale è potenzialmente professionale.

Ü di Alan Berg

In questo articolo, descriverò brevemente come installare le applicazioni Kivio di KOf- fice e Dia di GNOME Office e presenterò un rapido tour dei prodotti. Personalmente, ri- tengo che entrambi i tool eseguano in modo idoneo le rispettive funzionalità specifiche e che siano sorprendentemente facili da ap- prendere: i concetti di base si assorbono in cinque minuti. Alla fin fine, a causa della loro sostanziale equivalenza, può essere il vo- stro giudizio personale a spingervi a scegliere una di queste applicazioni.

GNOME e KDE sono gli ambienti desktop predominanti per GNU/Linux. Entrambi supportano una propria suite “office”; que- ste due suite office cercano di contendere

Installazione

Come Sistema Operativo di questa demo ho scelto Ubuntu 6.10. Non fatevi trarre in in- ganno dal fatto che le applicazioni facciano parte di KOffice o di GNOME Office: en- trambe verranno eseguite senza problemi con entrambi gli ambienti desktop. Prima di iniziare si potrà dover installare il gestore di package Adept, di cui l’ambiente KDE può essere sprovvisto: per installare questa utility basta digitare quanto segue da riga di comando:

sudo apt-get install adept libqt-perl

la

supremazia di OpenOffice; è importan-

te

notare che OpenOffice non ha un tool di

diagrammazione come Microsoft Visio. Si può sostenere con qualche grado di approssi- mazione che Impress o Draw di OpenOffice

possono imitarne la funzionalità, ma l’enfasi

di

Impress o di Draw è sulla presentazione e

sul disegno vettoriale, rispettivamente, e non sulla diagrammazione utilizzando simboli di libreria.

39

Login Internet Expert n.64 Maggio/Giugno 2007

cutting edge FIGURA 1 Adept al lavoro Ora si sarà in grado di lanciare Adept

cutting edge

FIGURA 1 Adept al lavoro
FIGURA 1 Adept al lavoro

Ora si sarà in grado di lanciare Adept selezionando

l’opzione

K menu/System/Adept Manager Manage Packages

Per installare Kivio (versione 1.5.2) bisogna lanciare Adept e inserire la password di admin di sistema che

si utilizza con sudo; attraverso la casella di ricerca in

alto nella finestra Adept window, effettuare una ri- cerca su “kivio”. A questo punto si dovrebbe vedere

una vista simile a quella di Figura 1. I pacchetti Kivio

e Kivio-data dovranno essere impostati nello stato di

install requested” e quindi si procede cliccando sul- l’icona verde presente in alto nella finestra di dialogo.

A questo punto si ha una versione funzionante del-

l’eseguibile Kivio sia da GNOME sia da KDE.

stra di sinistra è assente o la

si è rimossa per errore, basta

andare nell’editor Diagram e selezionare “File/New”. Per selezionare simboli dif- ferenti si deve cliccare sul

nome del foglio. Nella Figu- ra 3 il nome è “Network”, ma

di solito si parte con i fogli di

flowcharting “Basic”: sele- zionare altri fogli e scegliere quello che si considera rile-

vante. Tornati nell’editor di diagramma si possono trasci- nare i simboli sul pannello

di disegno.

Sotto i simboli sono presen-

ti le icone che permettono la

creazione di righe di diverso spessore, colore e struttura. Nella parte superiore ai sim- boli sono posizionate delle

icone speciali per l’importa- zione delle immagini e per la connessione di oggetti con differenti forme: “T” sta per testo e ovviamente permette di aggiungere anno- tazioni al proprio diagramma. Con questa funzionalità di base, saremo in grado

di creare diagrammi ragionevoli in pochi minuti.

Il fallimento di alcune applicazioni è nel desiderio

dei rispettivi sviluppatori di includere ogni funzione

immaginabile producendo strutture di menu troppo complesse con una significativa e inappropriata cur-

va di apprendimento. Dia segue lo spirito altamente

efficace di UNIX di restare concentrati e di eseguire al meglio una funzione specifica. Per salvare un file basta selezionare File/Save dalla superficie di disegno. Si può anche esportare il pro- getto corrente in molti differenti formati compreso

TIFF, JPEG e SVG. La capacità di salvataggio nel formato SVG è una forma di futura dimostrazione di come SVG sia una formato XML che rappresenta una

Ciò che chiamo “GNOME office” non è realmente

importante possibilità di diventare lo standard grafi-

una suite office ma è piuttosto una collezione di tool,

co

nella navigazione Web. XML è semplicemente te-

che comprende i ben noti e rispettati AbiWord, Dia e alcune altre applicazioni assortite. Per installare Dia (versione 0.95) attraverso la GUI

ed è, perciò, molto più facile da manipolare al volo

rispetto a un formato binario come JPEG. Dia attiva altri due dialoghi premendo, rispettiva-

sto

di

GNOME, si lancia Synaptic Package Manager da

mente, i tasti F8 e F9, o visitando l’opzione File del

Applications/Add Remove; si dovrà inserire la propria

menu dell’editor del diagramma. F8 attiva l’albero

password di admin quando viene richiesta. Selezio- nare Graphics/Dia Diagram Editor come è mostrato in Figura 2, quindi cliccare su OK.

del diagramma che rappresenta i simboli del proprio disegno come oggetti; un clic destro su un oggetto nell’albero permette un facile accesso al dialogo delle

Per installare da KDE si può ricercare “dia” in Adept

proprietà in cui si possono modificare proprietà come

e

procedere all’installazione.

colore e tipo di riga: questa efficienza rende possibile

Concetti di base di Dia

Una volta avviato Dia, verranno presentate due fine- stre separate come è mostrato nella Figura 3. La fine-

stra principale sulla sinistra è la superficie di disegno

e quella a destra è l’editor dei diagrammi. Se la fine-

40

Login Internet Expert n.64 Maggio/Giugno 2007

una modifica rapida e consistente.

La pressione del tasto F9 attiva un dialogo relativo al

foglio e agli oggetti che permette di aggiungere e spo-

stare oggetti (ad esempio simboli di computer o ban-

diere) tra fogli differenti. Ad esempio, si può spostare

un simbolo di computer dal foglio “Cisco—Compu-

ter” a “Networks” se si desidera. Si possono anche importare SVG come oggetti, ma su questo tornerò

cutting edge

cutting edge FIGURA 2 Installazione di Dia in Synaptic in seguito. La superficie di disegno stessa
FIGURA 2 Installazione di Dia in Synaptic
FIGURA 2 Installazione di Dia in Synaptic

in seguito.

La superficie di disegno stessa ha anche diverse op- zioni di menu. “Diagram” permette di separare un disegno in livelli in modo che si possano manipola-

re oggetti su un livello senza influenzare gli ulteriori

livelli. L’opzione di menu “Objects” consente di spo- stare gli oggetti in secondo piano o in primo piano in

modo da trovarsi dietro o davanti ad altri oggetti, con

la

possibilità di impostare la trasparenza degli oggetti

di

sfondo. Questa caratteristica permette di creare dei

diagrammi sofisticati e gradevoli. In sintesi, Dia è facile da apprendere e certamente non troppo complicato, ma è comunque in grado di offrire le funzionalità necessarie per produrre dia- grammi dettagliati esteticamente gradevoli.

diagramma, basta trascina-

re l’oggetto nel mezzo della

pagina, selezionare l’oggetto,

ridimensionarlo e poi con un doppio clic sull’oggetto ag- giungere del testo.

Per aggiungere una ulteriore

clipart selezionare dal menu principale Tools/Add stencil set e quindi selezionare l’ulterio- re insieme che si desidera ag- giungere, o cliccare sull’icona relativa sottostante il menu principale. Se non si è sicuri

di quale icona scegliere, ba-

sta posizionare il puntatore

del mouse su ciascuna icona

e attendere alcuni secondi

finché non appare un tooltip che spiega lo scopo dell’icona sottostante.

Il menu View permette di ag- giungere una griglia alla su- perficie di disegno e permet-

te

di suddividere il pannello

in

due aree di disegno: una

caratteristica utile particolar- mente nell’era dei monitor TFT a 21 pollici. Il pannello sulla destra per- mette di ottenere una rapida panoramica dell’intera pagina anche quando si sta ef- fettuando uno zoom su una particolare area nel pan- nello sinistro; la scheda “Layers” permette l’aggiunta e la rimozione dei livelli mentre la scheda “Object” mostra una panoramica di tutti gli oggetti della pagi- na; la metà inferiore della scheda sulla destra visua- lizza le proprietà dimensionali dell’oggetto corrente- mente selezionato. Si noti che Dia ha un insieme leg- germente superiore di proprietà manipolabili. Una seconda scheda permette di proteggere dalla modifica l’oggetto che è pratico se si vogliono eseguire azioni generali escludendo solo alcuni oggetti. Per un tutorial più dettagliato, si visiti il menu “Help” e si scelga “Kivio handbook”.

Formati dei file e scambio tra applicazioni

Concetti di Kivio

 

Fortunatamente, Kivio è altrettanto semplice e ba- nale da utilizzare come Dia benché abbia una per- sonalità leggermente differente. Nell’avviare Kivio

Microsoft Visio ha un formato di file .vsd proprieta- rio a cui sono potenzialmente associati problemi di licenza; perciò, sia Dia sia Kivio non importano o esportano questo formato. E ciò è una sfortuna per

attraverso l’opzione di menu Office/Kivio si verifica l’avvio standard di KOffice. Selezionare e effettuare un doppio clic su “Basic flowcharting”: Kivio sarà ora

gli utenti di aziende differenti e un buon esempio del perché, ogni qualvolta sia possibile, si dovrebbero adottare solo quei tool che possono produrre un ou-

in

esecuzione con un dialogo simile a quello mostra-

tput direttamente in formati standard aperti.

to

nella Figura 4. Al centro dello schermo si vedrà la

Il desiderio di abilitare i documenti di una applica-

superficie di disegno e sulla sinistra dello schermo le immagini clipart di flowcharting di base con i rela- tivi simboli (oggetti). Per creare un primo semplice

zione a interoperare in modo efficace con un’altra è venuto infine alla ribalta a causa della già detta fru- strazione degli utenti: gli effetti della incompatibili-

41

Login Internet Expert n.64 Maggio/Giugno 2007

cutting edge FIGURA 3 Avvio di Dia K ivio e Dia sono due strumenti software

cutting edge

FIGURA 3 Avvio di Dia
FIGURA 3 Avvio di Dia
cutting edge FIGURA 3 Avvio di Dia K ivio e Dia sono due strumenti software free

Kivio e Dia sono due strumenti software free molto efficienti e di semplice utiliz- zo

software free molto efficienti e di semplice utiliz- zo colo. L’esportazione è una funzione sofi- sticata

colo. L’esportazione

è una funzione sofi-

sticata in entrambe le applicazioni e riguarda prevalentemente vari formati grafici. L’esportazione da Kivio a Dia è risultata essere

più difficile del previ- sto, perché in Dia non

è presente alcuna op-

zione di importazione diretta dei file creati in Kivio. Dia, tutta- via, permette di ag- giungere direttamente delle immagini come oggetti attraverso la combinazione di tasti “CTRL + i”, pertanto esportando un file da Kivio come immagine

saremo in grado di ot-

tenere il risultato fina-

le desiderato.

L’esportazione diretta da Dia a Kivio appa- re essere impossibile

a causa delle limitate

funzionalità di impor-

tazione di Kivio. Tutti i moderni word processor possono utilizzare le caratteristiche delle esportazioni grafiche di entram- bi i tool, tuttavia, è chiaro che Dia ha più opzioni di importazione e perciò è più probabile che funzioni in modo trasparente in un differente ambiente sof- tware. Inoltre, i problemi di compatibilità probabil- mente costringeranno voi, o il vostro reparto ICT, a scegliere altri prodotti come strumenti di diagram- mazione. Spero e mi aspetto che questa barriera cada per permettere una proficua adozione dei documenti “open”. L’importazione delle immagini clipart rappresenta una ulteriore caratteristica di cui disporre. Un pra- tico progetto Sourceforge per Kivio è xfig2sml. Il file xfig-stencils-0.1.tar.bz2, è una risorsa, disponibile nella relativa sezione di download, che contiene 900 ogget- ti clipart. L’archivio risale al 2001 e si importa diretta- mente attraverso l’opzione File/Install stencil set. Kivio visualizza correttamente il primo livello della strut- tura della directory, ma purtroppo non gli oggetti sot- tostanti. Si tratta di un problema di Kivio che non è in grado di visualizzare accuratamente una struttura di directory profondamente nidificata: si può eliminare questo problema “appiattendo” l’archivio. Di con- seguenza è più facile per un principiante acquistare delle clipart o un’applicazione di creazione di clipart dalla società “theKompany”. Kivio può anche riconoscere oggetti Dia e il pacchetto Ubuntu ha le clipart Dia già comprese. Dia ha un proprio formato .shape per la memorizzazione di simboli che è una versione di

tà. Questa frustrazione era dovuta, in gran parte, ai formati chiusi dei file. Perciò, emergono due doman- de sulla possibilità di “andata e ritorno” circa i do- cumenti prodotti in queste applicazioni. La prima:

si possono importare e esportare le immagini clipart (dette stencil) tra applicazioni? La seconda: possiamo creare un diagramma in una applicazione per poi es- sere manipolato nell’altra? Proviamo prima la possibilità di “andata e ritorno” dei diagrammi. Non vi è alcuna funzione diretta di importazione o esportazione tra i formati nativi dei file, Dia tuttavia, ha molte più opzioni di importa- zione di Kivio: Kivio al momento può importare solo il proprio formato nativo, tuttavia non mi sorpren- derebbe se gli sviluppatori avessero eliminato questo problema nel momento in cui leggerete questo arti-

42

Login Internet Expert n.64 Maggio/Giugno 2007

cutting edge

cutting edge FIGURA 4 Kivio in azione tra i desktop. Inoltre, do il benvenuto al sempre
FIGURA 4 Kivio in azione
FIGURA 4 Kivio in azione

tra i desktop. Inoltre, do il benvenuto al sempre più prossimo e luminoso fu- turo dell’Open Document Format e dei formati SVG

e XML in generale che

hanno già aperto la strada

a una consistente intero-

perabilità tra applicazioni simili.