spacer

Sysresccd-manual-it Run your own scripts with autorun

History


Presentazione dell’Autorun

La caratteristica autorun permette di caricare automaticamente applicazioni all’avvio del sistema. Ogni script autorun può gestire un compito. Ad esempio, è possibile creare un’applicazione di backup che effettua un backup di un database, un altro per la pulizia del sistema, …

Di default lo script autorun può essere copiato nel root di un CDRom, al di fuori del file loop immagine compresso (sysrcd.dat), ma le altre fonti sono disponibili: floppy disk, partizioni dell’hard disk, condivisione di rete, e server web.

Lo script può essere chiamato autorun se è da solo. Se molti script devono essere caricati, è possibile chiamarli autorun0, autorun1,... . In questo caso, uno specifici scripts autorun possono essere permessi con l’opzione autoruns= assegnata allo startup al prompt d’avvio. Ad esempio, è possibile digitare rescuecd autoruns=2,3,4.

Se si vuole usare una sorgente floppy o di rete per un file autorun, bisognerà specificare la sorgente usando l’opzione all’avvio ar_source. Per ulteriori chiarimenti leggere il prossimo paragrafo.

Autorun è stato riscritto in SystemRescueCd-1.0.0 ed ora supporta nuove sorgenti autorun. E’ possibile avere più dettagli qui.

E’ possibile usare autorun per effettuare compiti completamente in automatico con SystemRescueCd. C’è un capitolo dedicato che illustra come usare autorun per gestire dei server windows/linux in remoto.

Opzioni previste dall’autorun

Bisogna usare questa opzione al momento dell’avvio, sulla riga di commando dell’avvio.

  • ar_source=xxx: posto dove gli autorun sono sistemati. Può essere la directory root di una partizione (/dev/sda1), uno share nfs (nfs://192.168.1.1:/path/to/scripts), uno share samba (smb://192.168.1.1/path/to/scripts), o una directory http (http://192.168.1.1/path/to/scripts).
  • autoruns=[0-9]: elenco separato da virgole degli script autorun che devono essere avviati. Ad esempio se viene usato autoruns=0,2,7 successivamente vengono eseguiti i seguenti script autorun: autorun0, autorun2, autorun7. Utilizzare autoruns=no per disabilitare tutti gli script autorun con un numero.
  • ar_nowait: non aspettare per un keypress dopo che lo script autorun è stato avviato.

Le seguenti applicazioni d’avvio dell’autorun sono state introdotte in SystemRescueCd-1.0.0:

  • ar_ignorefail: continua ad eseguire gli script a catena anche se uno è fallito (ritornato allo stato non-zero)
  • ar_nodel: non cancellare la copia temporanea dello script autorun allocato in /var/autorun/tmp dopo l’esecuzione
  • ar_disable: autorun completamente disabilitato, il semplice script autorun non sarà eseguito

Sommario delle regole di esecuzione degli scripts

All’avvio, una lista di allocazioni è controllata contro la presenza di files autorun. Essi sono in successione:

  • se il parametro ar_source= è passato all’avvio, la root directory dell’allocazione data. I supporti vengono su /mnt/autorun, permettendo di scrivere dati su di loro se il supporto non è protetto dalla scrittura.
  • Floppy disks: rescuecd ar_source=/dev/fd0
  • Hard disk: rescuecd ar_source=/dev/hda2 (gli scripts autorun nella seconda partizione del primo hard disk IDE )
  • NFS shares: rescuecd ar_source=nfs-server:/nfs/exported/directory
  • Samba shares: rescuecd ar_source=//samba-server/share (raccomandato senza user/password).
  • Http server: rescuecd ar_source=http://web-server/adminscripts/ (richiede SystemRescueCd-1.0.0 o successivi)
  • la root directory del CD-ROM
  • the superuser home directory (/root)
  • la directory /usr/share/sys.autorun

Se i files autorun vengono trovati in qualche allocazione, essi vengono avviati e il processo termina. Le ultime due allocazioni richiedono la ricostruzione di SystemRescueCd e sono state fatte per essere usate per scopi avanzati o di test.

In ogni allocazione di una sorgente, ci sono due possibili modi di operazione:

  • un modo semplice : se viene trovato uno script shell chiamato autorun , esso viene avviato
  • un modo più flessibile : se vengono trovati scripts autorun# (# è un numero da 0 a 9) oppure
  • autoruns= il parametro d’avvio NON è stato specificato, o
  • autoruns= il valore del parametro d’avvio contiene #

Esempio: rescuecd autoruns=0,1,4. In questo esempio, potrebbero essere avviati solo gli scripts autorun0, autorun1 o autorun4 se presenti. Altri scripts, come autorun2, autorun3 e autorun5 saranno ignorati, successivamente vengono caricati in ordine alfabetico gli scripts autorizzati. Ogni qualvolta uno script ritorna al codice non-zero, gli stop di processo e i successivi scripts non vengono caricati. E’ possibile prevenire qualsiasi esecuzione di un "autorun#" con un parametro autorun= boot senza digitare niente, ex: autoruns=no. Ciò non ha effetto sullo script autorun.

Altrimenti è possibile inserire entrambi gli scripts autorun e autorun#, questo probabilmente dovrebbe essere evitato.

Lo script deve essere qualsiasi script valido per una shell. Gli script Perl, python, … etc. non son supportati al momento. I terminatori di fine riga di Windows sono tradotti per permettere agli scrpts shell scritti con un editor MS di girare.

Esempi di scripts autorun

 #!/bin/bash
 (
   ifconfig eth0 | head -n 3
   fdisk -l /dev/hda
 ) | tee -a /mnt/autorun/report
 sync
 exit 0

Questo script accumulerà informazioni sull'interfaccia network eth0 e sulle partizioni del disco in un file chiamato report sul drive floppy. La sequenza d'avvio del BIOS deve specificare prima il CD, il parametro d'avvio ar_source= deve essere correttamente settato, il dischetto deve permettere la scrittura, il CD e il dischetto devono essere inseriti all'avvio.

Se la rete è configurata automaticamente all'avvio (DHCP), è possibile inviare informazioni attraverso un NFS o ad esempio attraverso uno share samba.

Non bisogna dimenticare di definire l'allocazione di autorun all'avvio. Dire che si sta condividendo sul proprio server host attraverso NFS una directory scrivibile chiamata /nfs/backup, bisogna specificare:

  • rescuecd ar_source=nfs://myserver:/nfs/backup

nel prompt di avvio di SystemRescueCd e inserire nella cartella condivisa uno script autorun come questo:

#!/bin/bash
date=$(date +%Y%m%d)
cat /dev/hda | gzip > /mnt/autorun/$date.hda.gz && exit 0
echo $date hda backup error
exit 1

Se è garantito sufficiente spazio nello share NFS, qui sarà copiata un'immagine compressa del proprio prime disco IDE. Bisogna essere consapevoli del fatto che è presente una dimensione massima del file di 2GB quando si copia attraverso la rete o ad un filesystem FAT.

Bisogna garantire che il nome di risoluzione lavori se si effettuerà l'accesso al server NFS con il suo nome invece che con il suo indirizzo IP.

spacer