View Single Post
Old 06-11-2009, 13:22   #1
gurutech
Senior Member
 
L'Avatar di gurutech
 
Iscritto dal: Jun 2000
Città: S.Giuliano (MI)
Messaggi: 1046
[Thread Ufficiale] Scripting

Lo script, un piatto finlandese...
Molti di voi avranno sentito parlare di script o scripting nell'ambito della programmazione. Ma cos'è veramente uno script?
Per script si intende un programma che viene eseguito attraverso un altro programma, chiamato interprete dello script.
Attraverso uno script vengono eseguite una serie di istruzioni e comandi che agiscono in base a dei parametri, che possono essere le condizioni del sistema in quel momento, o alcune variabili di ingresso. Uno script può anche non avere nessun parametro di ingresso, ma essere programmato per fare sempre la stessa cosa, in maniera ripetitiva, salvandoci da un bel po' di noia che si avrebbe a digitare sempre lo stesso comando.
Alcuni linguaggi di script famosi sono:
  • SH o shell script, interpretati da una shell *nix (la più usata in GNU/Linux è Bash)
  • BAT o file batch, interpretati dal CMD.EXE di Windows
  • Perl il cui interprete si chiama per l'appunto perl
  • Python il cui interprete si chiama per l'appunto python
  • PHP che possono essere richiamati da un server Web attraverso un modulo o da un interprete all'interno del sistema operativo
  • ASP che possono essere richiamati da un server Web attraverso un modulo
e molti altri non meno importanti.

...che può essere gustato in molti modi!
Tutti i sistemi operativi che io conosca hanno almeno un linguaggio di scripting a loro disposizione, più o meno potente. Come potete capire gli script ricoprono un importante ruolo nell'amministrazione del sistema, ad es. quando vogliamo automatizzare una operazione perchè venga eseguita di notte o allo stesso modo su 1000 computer. Non di meno gli script sono importanti per il World Wide Web, attraverso i quali possiamo presentare una pagina creata "al volo" per l'utente a seconda del suo comportamento.
Rimanendo a livello di sistema operativo, mentre nell'ambito Microsoft si tende ad utilizzare poco gli script, in GNU/Linux e in generale in tutti i sistemi *nix (compreso MacOSX) ricoprono una notevole importanza. Infatti l'avvio stesso del sistema operativo si svolge tramite l'esecuzione di una serie di script, e poche sono le operazioni che non si possono automatizzare con questa tecnica, dalla scrittura su CDRW al controllo della situazione metereologica.

Ingredienti di base
Ma come è fatto uno script?
Normalmente si presenta come un file di semplice testo, contenente la sequenza di comandi da eseguire. La potenza e la varietà dei comandi di cui possiamo disporre in uno script dipendono dall'interprete che intendiamo usare per lo script.
Se ad esempio uno script bash che svolge un determinato compito, può generalmente essere riscritto in perl, utilizzando un linguaggio totalmente differente. Vi sono alcune operazioni che possono essere svolte più velocemente e meglio con un linguaggio piuttosto che con un altro, ma in genere ognuno scrive utilizzando quello che conosce meglio .

Le varie scuole di cucina
Penso di non far torto a nessuno dicendo che il linguaggio in assoluto più usato in GNU/Linux per la programmazione degli script di sistema è Bash, in stretta collaborazione con gli strumenti detti coreutils e con programmi come grep, sed e awk.
Il perl la fa da padrone tutte le volte che c'è da elaborare un formato testuale in un altro formato tramite l'uso di PCRE, o Perl Compatible regular Expression

Vediamo un esempio classico di uno script in bash

file ciao.sh
Codice:
#!/bin/bash
echo "Ciao!"
questo script è composto da solo due righe, vediamo come è fatto:
la prima riga, in tutti gli script, comincia con #! seguito dal nome dell'interprete che vogliamo usare per i comandi che seguiranno
la seconda riga è un semplice comando "echo" che fa vedere a video quando scritto tra le virgolette. In bash si possono anche eseguire i costrutti classici della programmazione, come i cicli for, ad esempio con
file pingtutti.sh
Codice:
#!/bin/bash
for ((n=1;n<254;n++)); do {
ping -c1 -w2 192.168.0.$n
}
done
possiamo fare un ping a tutti gli indirizzi ip da 192.168.0.1 sino a 192.168.0.254.

Tutti a tavola
Ho inaugurato questa discussione con l'intento di esplorare il misterioso mondo dello scripting, agli occhi dei profani pura magia, che è uno dei principali motivi per cui mi piace usare GNU/Linux e il free software in generale. Tramite questo topic mi piacerebbe venire a conoscenza di modi "fantasiosi" di usare strumenti come sed e awk, il perl, e quant'altro per domare il sistema e fargli fare quello che dico io, e non quello che vuole lui.
Mano a mano che posterete i vostri script li indicizzerò all'interno di questo primo post, con una breve descrizione di cosa fanno.
A, last but not least, il codice postato è libero da costrizioni, non chiedo di applicarvi la GPL (liberi di farlo se volete), ma quanto meno che ogni utente che passi di qui a leggerlo possa farvi quello che gli pare senza chiedervi il permesso, e senza che eventuali danni ricadano su di voi.

E adesso, sotto con gli script!

Indice:
sshtemp: per evitare la richiesta di autenticità di un host in connessione ssh (Bash)
Reinstallare tutti i .deb che inseriscono almeno un file nella cartella data come argomento (Bash)
Catturare un video da una finestra X11 (Bash + mencoder)
aggiungere una progress-bar alle operazioni con i file .RAR su GNOME (PHP + Zenity)
__________________
“No te tomes tan en serio la vida, al fin y al cabo no saldrás vivo de ella”

Ultima modifica di gurutech : 12-11-2009 alle 14:17.
gurutech è offline   Rispondi citando il messaggio o parte di esso