Programmazione.it v6.2
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicità Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Chat Forum
Python for Unix and Linux System Administration
Recensito da Francesco Corsentino il 08-04-2009 ore 12:09
Copertina ISBN: 0596515820
Autori: Gift, Jones
Editore: O'Reilly
Lingua: Inglese
Anno: 2008
Pagine: 456
Allegati: Nessuno
Intel Software
Il libro di Gift e Jones mostra come sia possibile scrivere script Python utili al lavoro di amministratore di macchine UNIX-like; è un testo creativo e divertente, a metà strada fra un manuale di programmazione e un cookbook. Gli autori hanno volutamente usato un linguaggio amichevole, senza troppi formalismi o discorsi gonfiati di pesanti teorie. Buona la struttura dei capitoli, ognuno dei quali enuclea in modo più o meno completo un dato argomento.

Python for Unix and Linux System Administration mette a segno due obiettivi importanti: far innamorare il lettore di Python e infiammare il dibattito che vuole Python come sostituto di Perl nell'ambito del lavoro di sysadmin.

Il lavoro di un amministratore di sistema è supportato, oltre che dalle mille utility a disposizione nelle macchina UNIX-like, anche da uno dei linguaggi più potenti, ossia Perl: è tuttora uno dei migliori linguaggi di programmazione, molto flessibile e adatto a una moltitudine di compiti grazie alle eccellenti librerie di cui è dotato, perfetto ausilio per i superuser. I due autori propongono di mettere in secondo piano Perl a beneficio di Python e il loro libro vuole essere una sorta di conferma di tale tesi.

Python può fare tutto quello che fa Perl, e può farlo in modo più elegante e più semplice, con prestazioni eccellenti, anche se qui per prestazioni non intendiamo espressamente i tempi di esecuzione, quanto una maniera di organizzare gli script più efficace e un modo di scrivere il codice senza dubbio più pulito, chiaro e semplice. Python non invidia dunque nulla a Perl, tanto meno le librerie che la comunità mette a disposizione. La Python Standard Library è una delle migliori in circolazione e costantemente in crescita per qualità e potenzialità.

E allora la domanda che un lettore potrebbe porsi è a questo punto: perché decidere di scegliere Python come linguaggio di riferimento per l'amministrazione di sistema? Il libro intero, come detto, fornisce precise risposte a questa domanda; cerchiamo qui di elencare brevemente le caratteristiche che hanno spinto milioni di programmatori all'uso di Python:
  • facilità di scrittura del codice e semplicità di apprendimento del linguaggio;
  • eccellente leggibilità e mantenimento del codice;
  • librerie numerose e potenti;
  • alto numero di forum e siti dedicati;
  • eccellente documentazione;
  • pieno supporto alla tecnologia OOP.
Perfino Eric Raymond si era sbilanciato molti anni fa nel suo How to became an hacker inneggiando a Python e proponendolo come primo linguaggio da imparare; fu buon profeta e ottimo osservatore.

Gift e Jones hanno pensato bene di scrivere Python for Unix and Linux System Administration presentando i più comuni problemi che gli amministratori sono chiamati a risolvere e proponendo di conseguenza possibili eleganti soluzioni tramite script Python. Ogni capitolo del libro prende in consegna un problema e gli autori propongono tutte le funzioni e le librerie di Python adatte a quel particolare ambiente. La struttura dei capitoli è tale che il lettore può benissimo ignorare l'ordine seguito nel testo e procedere per convenienza. E così faremo in questa recensione.

Partiamo infatti dal capitolo 8 denominato OS Soup: il lettore potrà rendersi conto del fatto che Python gode di un grado di portabilità altissimo e può ben integrarsi con qualsiasi piattaforma, senza per questo perdere efficacia. Se vogliamo, tale capitolo rappresenta un po' un'eccezione rispetto al titolo del libro, ma è ugualmente una lettura illuminante e dà forza al concetto secondo cui Python può essere ritenuto un linguaggio completo, tale da sostituire script Bash e le funzionalità di Perl. L'intento degli autori è quello di incoraggiare gli utenti e gli amministratori a programmare in Python, perché, diversamente dagli altri linguaggi, le utility e gli script già programmati e testati in un particolare ambiente possono benissimo essere trasferite e subito adattate ad altri sistemi, in modo del tutto indolore e con somma soddisfazione dell'amministratore, liberato dal tedioso compito del debugging di procedure già testate in un ambiente, ma non funzionanti in altre piattaforme. Lungo il capitolo si leggerà delle caratteristiche e del funzionamento degli script nei vari sistemi Mac OS X, Ubuntu, Red Hat, Solaris; delle problematiche e delle relative soluzioni in ambienti virtualizzati e, nel finale, di alcune questioni legate al cloud computing.

Analizziamo adesso qualche interessante capitolo. Per esempio, la prima cosa che gli autori descrivono è una potente utility di Python e cioé la shell, pezzo unico nel panorama dei linguaggi di programmazione. Nessun altro linguaggio infatti può vantare una shell come quella di Python . Nel libro si fa riferimento a IPython, elemento imprescindibile per i programmatori, utile per un'infinità di scopi. In particolare, la shell viene usata in fase di test del codice e migliora l'efficacia e i tempi della fase medesima. IPython permette di programmare in modo più comodo, offrendo alcuni utili funzioni quali l'autocompletamento dei comandi, l'uso e consumo delle utility della shell di base del sistema, il logging delle sessioni. A supporto, un ottimo forum e un ricco wiki relativo al progetto.

Un amministratore di sistema si trova a dover gestire e manipolare soprattutto file di testo, generalmente plain text, tipo i file di configurazione o i file di log. Per manipolare allora correttamente tali risorse servono librerie funzionali, di cui Python dispone. In più, specialmente oggi, si sta diffondendo la cultura di XML e molti file e dati sono strutturati secondo una delle tante sintassi XML-based. In tal caso le librerie di Python circa XML è quanto di meglio si possa desiderare da un linguaggio di programmazione potente ed elegante, al pari di Java. Il capitolo 3 presenta tutte le funzioni e le librerie per la gestione delle stringhe e del testo in generale. Gli autori mostrano come sia possibile e semplice in Python interagire con i potenti strumenti quali gawk e grep e scrivere script efficaci. Per poter meglio comprendere l'eleganza di Python, talvolta gli autori presentano accanto al codice Python gli equivalenti script in Perl o script Bash: proprio qui si notano le caratteristiche menzionate prima, e cioè eleganza, leggibilità, semplicità di scrittura e comprensione del codice Python. Molte sono pure le librerie di terze parti che un programmatore può usare per produrre report e formati utili per il Web o per la stampa.

Accanto alle problematiche relative al testo e alla gestione dei file di testo, gli amministratori lavorano spesso su problemi legati al file system e alla gestione dei file e delle directory in generale. A tal proposito conviene sempre usare i comandi e le utility che il sistema mette a disposizione, quindi interagire con la shell e i suoi comandi. Abbiamo prima parlato di IPython che quindi ci torna immediatamente utile. Ma un capitolo altrettanto interessante e ricco di tanto codice è il sesto, nel quale gli autori mostrano come sia possibile mettere in pratica procedure e politiche di gestione del file system anche complesse sfruttando, al solito, le pratiche librerie di Python. Il capitolo diventa così una sorta di cookbook in miniatura, con tanti esempi circa la comparazione dei file, le delicate operazioni di merging e le problematiche relative alla compressione e archiviazione dei file; gli script mostrano come è possibile interagire con i comandi tipo tar, bz2 e via così.

Un altro capitolo stimolante è quinto dedicato al networking. In questo caso al lettore si richiedono conoscenze un po' più approfondite. Il capitolo spiega come programmare script relativi ai vari servizi internet, quindi gli autori presentano le best practices per usare in modo sicuro ed efficiente i socket, mettere a punto RPC, utilizzare e interagire con SSH. Alla fine del capitolo viene presentata una completa trattazione della creatura di Philippe Biondi ossia Scapy. Quest'ultimo offre una libreria dedicata al networking molto potente: le funzioni offerte rappresentano un mix dei più utili comandi quali traceroute, ping e tcpdump. Descrivendo Scapy, Gift e Jones hanno voluto dimostrare come con Python un amministratore può staccarsi abbastanza nettamente dalle classiche utility di sistema e realizzare propri applicativi, personalizzati e specificatamente dedicati al problema che devono risolvere, con piena soddisfazione per l'utente.

L'ultimo capitolo presenta casi di studio, ottimi esempi per vedere Python all'opera su progetti concreti e complessi. Il primo esempio riguarda la gestione del DNS, un secondo esempio mostra l'uso di Python nell'analisi e nel reporting dei log di Apache, un terzo esempio mostra come è possibile costruire un FTP mirror in modo semplice, veloce e sicuro.

In definitiva occorre menzionare quanto segue. Il titolo del testo di Gift e Jones può far pensare a un'opera mastodontica ed omnicomprensiva sull'arte dell'amministrazione di un sistema e sulle relative soluzioni Python, ma in realtà la prima parte è praticamente assente nel testo. Rimane quindi un buon manuale sulle funzioni e librerie di Python, che difficilmente trovano ampia trattazione nei libri relativi soltanto alla programmazione. E' evidente la necessaria conoscenza del linguaggio per apprezzare fino in fondo Python for Unix and Linux System Administration.
proOttimo il codice a corredo della trattazione e molto interessanti i casi di studio presentati.
controNessuno in particolare.
Precedente: Nove plug-in jQuery per i menu (2/2)
Successiva: Guida introduttiva a Docebo (6/6)
Commenti:  Primi  «  Meno recenti  «  11 - 11 di 11
Intervento di Luigi Z a.k.a. ciupaz del 06-05-2009 ore 10:55, Milano (MI)
Cavaliere
Cavaliere

(141 interventi)
Iscritto il 20-07-2001
Grazie Cesare, direi che sei stato molto esaustivo.
Commenti:  Primi  «  Meno recenti  «  11 - 11 di 11
Copyright Programmazione.it™ 1999-2009. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 0.852 secondi. Sito ottimizzato per Mozilla Firefox. Powered by Kyron.