SCRIPT

  La maggior parte di questi script sono vecchi e necessitano di molto altro lavoro per essere di una qualche autentica utilità ad altri oltre che a me stesso.  Li tengo qui soprattutto per averli disponibili quando mi dimentico di portarmeli appresso ma ho una connessione Internet.

  Nel novembre 2011 ho tolto la maggior parte degli script perché mi sono arreso al fatto che non li avrei mai portati a termine rendendoli decenti da esporre al pubblico.  Ne ho lasciati solo tre, il primo per ricordarmi come si fanno alcune cose in AWK, il secondo perché lo uso spesso e il terzo perché è uno dei miei più vecchi e vi sono particolarmente affezionato (risale ai tempi in cui gestivo un server Gopher).

  Sempre nel novembre 2011 ho aggiunto un nuovo script, dump.sh, questo finalmente utile e quasi completo di tutte le funzionalità che vi voglio implementare, che descrivo nel paragrafo che segue.

  Passano gli anni, e di tanto in tanto ne aggiungo un altro.  Incompleti, che funzionano solo in certe distribuzioni, a certe condizioni, ma comunque preferibili al dover lavorare sempre a mano! :-)

dump.sh (versione 1.6.4.5, dell'11 aprile 2017) produce file di dump (copie immagine) delle partizioni di un sistema ripristinabili con il comando restore(8).  Lo script interroga il campo fs_freq, il quinto, del file /etc/fstab per determinare di quali filesystem si devono eseguire le immagini con il comando dump(8). Permette di specificare il livello di dump (0 per l'immagine completa, >0 per i backup incrementali), la directory dove scrivere l'immagine di dump, una  directory da montare prima dell'esecuzione del dump.  Permette inoltre di ordinare la creazione di un file TOC (Table of Contents) insieme all'immagine, di indicare il file dumpdates dove registrare le date dei dump effettuati per filesystem e per livello e, ultima cosa importante, implementa una modalità di funzionamento che ne permette delle prestazioni in scrittura accettabili quando lavora su un filesystem di rete NFS.  Infatti il comando dump effettua dei frequenti comandi SYNC per assicurarsi che i dati inviati al dispositivo di massa siano stati effettivamente scritti sul supporto fisico e che non restino invece parcheggiati in qualche area di buffer.  Questo purtroppo riduce moltissimo le prestazioni del filesystem di rete (va a circa 430 KiB/sec su una connessione da 100Mb/sec, sfruttando così circa 1/20 della larghezza di banda!).  Il comando dump(8) non ha opzioni che ne disattivino la scrittura sincrona, così si è dovuto ingannarlo.
  L'inganno consiste nel creare una named pipe locale e nel lanciare un processo che legga in background da questa named pipe per scrivere i dati letti nel vero file di dump (sul filesystem di rete).  Fatto questo si lancia il comando dump(8) dicendogli di scrivere nella named pipe.  In questo modo si è visto aumentare la velocità di scrittura a 7,4 MiB/sec (media per 4min su un NFS versione 3 operante via UDP).

  Informazioni sulle altre opzioni riconosciute dallo script e sui loro valori di default sono ottenibili dallo script stesso eseguendolo con l'opzione -h che ne mostra la pagina di aiuto (help).

Limitazioni
: dump.sh effettua il dump di tutti i filesystem che in /etc/fstab risultano abilitati al dump automatico (quinto campo posto a 1 invece che a 0), tutti allo stesso livello.  Non è ancora possibile indicare i filesystem di cui eseguire il dump sulla riga di comando.
La umask è quella del processo genitore, e non è né controllata né impostata ad un valore sicuro.  Una prossima versione implementerà queste due caratteristiche.  Nel frattempo, la regolazione di quali filesystem creare il file di dump si effettua impostando il campo fs_freq, ossia il quinto, delle righe rilevanti nel file /etc/fstab (0 vuol dire niente dump, 1 vuol dire che si effettua il dump), mentre la umask deve essere impostata al valore desiderato prima dell'esecuzione dello script.
I file di immagine creati non sono compressi.
access-point_mode.sh (versione 2.0 del 09 marzo 2016) configura l'interfaccia indicata (se non indicata, quella wlan0) perché funzioni da Access Point sull'indirizzo/maschera di rete dati (se non indicati, quelli 10.1.2.3/8). È attivato il servizio hostapd, quello isc-dhcp-server, è configurato il forwarding con un altra interfaccia presente (se non indicata, quella eth0) e configurato il firewall iptables perché esegua lo SNAT tra l'interfaccia WiFi e la seconda.

Script in linguaggio AWK:
traccia_dimensioni_file.awk script che utilizzo per tenere traccia dello stato di avanzamento di un download che richiede un tempo lungo per il suo completamento.  Esempio del suo uso:

[utecne@hal9000 ~]$ traccia_dimensioni_file.awk -v DIME=39707720 -v FILE='Download/gcc-4.1.2.tar.bz2'
Scaricati 28221,9 KB, 27,5604 MB di 38777,1 KB, 37,8682 MB totali (72,7798 %)


Controlla la definizione delle variabili DIME e FILE e il possibile errore del comando di shell di cui chiede l'esecuzione alla shell genitrice, producendo dei messaggi d'errore in caso di anomalie. Se tutto va bene il codice d'errore risultante (exit code) è zero.
wget_file.awk
script che analizza un file HTML fornito come parametro che contiene dei file musicali.  Lo script ne ricava informazioni sul numero di traccia, il titolo e la URI per lo scaricamento, quindi lo preleva usando il comando esterno wget(1).  Funziona solo con pagine HTML formattate in un certo particolare modo, ma lo tengo sul sito perché scrivendolo ho imparato diverse cose su AWK, e potrebbe servirmi di usarlo come riferimento.


Script di shell (bash, di solito):
chiave.sh scrive verso lo standard output il valore di hash del contenuto di una variabile d'ambiente specificata sulla riga di comando effettuato con un comando di hashing specificato anch'esso sulla riga di comando.  L'output è scritto tra parentesi quadre a caratteri neri (di default), cosicché se lo sfondo del terminale è anch'esso di colore nero non risulterà visibile ad occhi indiscreti, ma sarà lo stesso copincollabile per essere usato, ad esempio, come password.  L'opzione -x (o --xauth), unita all'opzione -a cat (nessun algoritmo di hash, semplice copia dall'input all'output), produce in uscita la stringa contenente la chiave di autorizzazione per il protocollo MIT-MAGIC-COOKIE-1 del display grafico in uso (vedasi man xauth(1)).
Esempî del suo uso:

[utecne@hal9000 ~]$ chiave.sh -f CHIAVE -a sha1sum
[1234567890abcdef1234567890abcdef12345678]
[utecne@hal9000 ~]$ chiave.sh -f SEGRETO -a md5sum
[1234567890abcde1234567890abcde12]
[utecne@hal9000 ~]$ chiave.sh -a cat -x
[1234567890abcde1234567890abcde12]
Usenet2Gopher.sh uno script che copia e converte i file della posta elettronica o di newsgroup memorizzati da un server IMAP locale in formato maildir in file da rendere disponibili mediante un server Gopher; lo script crea anche un file gophermap.
 

Ultima revisione: 11 aprile 2017

< Torna al livello superiore <
<< Torna alla pagina iniziale <<