Colorare il boot di Debian: differenze tra le versioni

m
Nessun oggetto della modifica
 
(8 versioni intermedie di 4 utenti non mostrate)
Riga 1: Riga 1:
{{Versioni compatibili|Debian Etch 4.0<br/>Debian Lenny 5.0<br/>Debian Squeeze<br/>Debian Sid|}}
{{Versioni compatibili|Jessie|Testing_2017}}
=Colorare il boot di Debian=
 
== Colorare il boot di Debian ==
{{Warningbox | A partire da Debian 8 ([[Jessie]]), [[SysV]] è stato rimpiazzato di default da [[systemd]]. Per cui questa guida si considera interamente compatibile con Jessie e versioni successive, solo installando il pacchetto '''sysvinit-core''', che comporterà la disinstallazione e il rimpiazzo di '''systemd'''.}}
 
Lo scopo di questa guida è quella di colorare i messaggi che scorrono all'avvio del sistema su una Debian-box.<br>
Lo scopo di questa guida è quella di colorare i messaggi che scorrono all'avvio del sistema su una Debian-box.<br>
Il file che si occupa della stampa a schermo dei log è <code>'''/lib/lsb/init-functions'''</code>, fornito dal pacchetto <code>'''lsb-base'''</code>, ed è quello che andremo a modificare.
Il file che si occupa della stampa a schermo dei log è <code>'''/lib/lsb/init-functions'''</code>, fornito dal pacchetto <code>'''lsb-base'''</code>, ed è quello che andremo a modificare.
Riga 6: Riga 9:
Le modifiche che effettueremo non colorano solo i messaggi al boot, ma anche eventuali messaggi stampati su terminale in caso di operazioni sui servizi del sistema (ad esempio il "restart" di un demone).
Le modifiche che effettueremo non colorano solo i messaggi al boot, ma anche eventuali messaggi stampati su terminale in caso di operazioni sui servizi del sistema (ad esempio il "restart" di un demone).


=Funzionamento di init-functions=
{{Suggerimento | Anziché sovrascrivere il file <code>'''/lib/lsb/init-functions'''</code> è possibile scrivere tutte le funzioni in uno script in <code>/lib/lsb/init-functions.d/</code>, per esempio con nome <code>99-colors</code> così da sovrascrivere per ultimo tutte le definizioni di funzione che vogliamo modificare. In questo modo le modifiche saranno persistenti anche dopo un aggiornamento. E per annullare le modifiche sarà sufficiente eliminare il file creato.
 
In caso invece si sia sovrascritto il file <code>/lib/lsb/init-functions</code>, per annullare le modifiche basta reinstallare il pacchetto '''lsb-base''':
<pre># apt-get --reinstall install lsb-base</pre> }}
 
== Funzionamento di init-functions ==
Qualsiasi comportamento degli script di init del sistema, in ambiente shell, è specificato dal file <code>init-functions</code>. Esso contiene varie funzioni richiamate dagli init-script e si occupa di determinare lo ''status'' e l'identificazione del processo in corso per poi rilasciare dei log delle operazioni.
Qualsiasi comportamento degli script di init del sistema, in ambiente shell, è specificato dal file <code>init-functions</code>. Esso contiene varie funzioni richiamate dagli init-script e si occupa di determinare lo ''status'' e l'identificazione del processo in corso per poi rilasciare dei log delle operazioni.
<br>
<br>
Riga 66: Riga 74:
Se vogliamo colorare una porzione di testo è necessario inserire, prima del testo, la sequenza di escape riferita al colore voluto e, eventualmente, terminare il testo con il colore ''Normal'' affinché il testo successivo non resti colorato.
Se vogliamo colorare una porzione di testo è necessario inserire, prima del testo, la sequenza di escape riferita al colore voluto e, eventualmente, terminare il testo con il colore ''Normal'' affinché il testo successivo non resti colorato.


=Modifica di "init-functions"=
== Modifica di "init-functions" ==


==log_use_fancy_output==
=== log_use_fancy_output ===
Per prima cosa andiamo a definire le sequenze di escape dei colori come variabili, per evitare di dover riscrivere la sequenza ogni volta nei messaggi. In più diamo la possibilità a Bash di evitare di interpretare le sequenze nel caso il nostro sistema non utilizzi la modalità '''fancy output''', il testo colorato, nella funzione <code>log_use_fancy_output</code>, al fine di evitare caratteri incomprensibili nell'output.
Per prima cosa andiamo a definire le sequenze di escape dei colori come variabili, per evitare di dover riscrivere la sequenza ogni volta nei messaggi. In più diamo la possibilità a Bash di evitare di interpretare le sequenze nel caso il nostro sistema non utilizzi la modalità '''fancy output''', il testo colorato, nella funzione <code>log_use_fancy_output</code>, al fine di evitare caratteri incomprensibili nell'output.


Riga 112: Riga 120:
<pre>${RED}</pre>
<pre>${RED}</pre>


==log_begin_msg==
=== log_begin_msg ===
Questa funzione si occupa della parte iniziale dei messaggi relativi alle operazioni sui servizi, come il restart. Il colore utilizzato sarà il "BLUE".
Questa funzione si occupa della parte iniziale dei messaggi relativi alle operazioni sui servizi, come il restart. Il colore utilizzato sarà il "BLUE".


Riga 125: Riga 133:
</pre>
</pre>


==log_daemon_msg==
=== log_daemon_msg ===
Si occupa dei messaggi sulle operazioni di avvio di servizi. Utilizzeremo il colore "BLUE" per la parte iniziale del messaggio mentre utilizzeremo il colore "PINK" per evidenziare il nome del demone su cui si opera.
Si occupa dei messaggi sulle operazioni di avvio di servizi. Utilizzeremo il colore "BLUE" per la parte iniziale del messaggio mentre utilizzeremo il colore "PINK" per evidenziare il nome del demone su cui si opera.


Riga 134: Riga 142:
         return 1
         return 1
     fi
     fi
    log_daemon_msg_pre "$@"
     if [ -z "${2:-}" ]; then
     if [ -z "${2:-}" ]; then
         /bin/echo -n -e "${BLUE}$1:${NORMAL}"
         /bin/echo -n -e "${BLUE}$1:${NORMAL}"
Riga 142: Riga 148:
      
      
     /bin/echo -n -e "${BLUE}$1:${PINK} $2${NORMAL}"
     /bin/echo -n -e "${BLUE}$1:${PINK} $2${NORMAL}"
    log_daemon_msg_post "$@"
}
}
</pre>
</pre>


==log_progress_msg==
=== log_progress_msg ===
Stampa il nome del servizio su cui sta operando. Utilizzeremo il "PINK":
Stampa il nome del servizio su cui sta operando. Utilizzeremo il "PINK":


Riga 159: Riga 164:
</pre>
</pre>


==log_end_msg==
=== log_end_msg ===
Lasceremo i colori "YELLOW" e "RED" rispettivamente per i messaggi di ''warning'' e ''fail''.
Lasceremo i colori "YELLOW" e "RED" rispettivamente per i messaggi di ''warning'' e ''fail''.
Aggiungeremo poi il colore "GREEN" per i messaggi di corretta esecuzione del processo. In più aggiungeremo il testo "''done''" prima del "." come conferma di esecuzione.<br>
Aggiungeremo poi il colore "GREEN" per i messaggi di corretta esecuzione del processo. In più aggiungeremo il testo "''done''" prima del "." come conferma di esecuzione.<br>
Riga 172: Riga 177:


     retval=$1
     retval=$1
    log_end_msg_pre "$@"


     # Only do the fancy stuff if we have an appropriate terminal
     # Only do the fancy stuff if we have an appropriate terminal
Riga 185: Riga 188:
         /bin/echo -e " ${RED}failed!${NORMAL}"
         /bin/echo -e " ${RED}failed!${NORMAL}"
     fi
     fi
    log_end_msg_post "$@"
     return $retval
     return $retval
}
}
</pre>
</pre>


==log_action_msg==
=== log_action_msg ===
Questa funzione e le successive stampano le varie azioni compiute sui demoni. Modifichiamo questa sezione come segue:
Questa funzione e le successive stampano le varie azioni compiute sui demoni. Modifichiamo questa sezione come segue:


Riga 211: Riga 213:


log_action_end_msg () {
log_action_end_msg () {
    log_action_end_msg_pre "$@"
      
      
     if [ -z "${2:-}" ]; then
     if [ -z "${2:-}" ]; then
Riga 224: Riga 225:
         /bin/echo -e "${RED}failed${end}${RED}.${NORMAL}"
         /bin/echo -e "${RED}failed${end}${RED}.${NORMAL}"
     fi
     fi
    log_action_end_msg_post "$@"
}
}
</pre>
</pre>
Riga 230: Riga 230:
Una modifica di questo tipo colora tutti i messaggi stampati durante l'avvio del sistema. Alcuni init-scripts, però, hanno una propria formattazione del testo di output e questo scavalcherà le direttive di <code>init-functions</code>.
Una modifica di questo tipo colora tutti i messaggi stampati durante l'avvio del sistema. Alcuni init-scripts, però, hanno una propria formattazione del testo di output e questo scavalcherà le direttive di <code>init-functions</code>.


=Una modifica meno invasiva=
== Una modifica meno invasiva ==
Un altro tipo di modifica, meno invasiva, colora solo delle parti specifiche dei messaggi.
Un altro tipo di modifica, meno invasiva, colora solo delle parti specifiche dei messaggi.
In questo caso lasceremo la parte iniziale dei messaggi con il colore predefinito di Bash, mentre coloriamo utilizzando i colori "BLUE" e "GREEN" per colorare rispettivamente il nome del servizio in causa e il risultato dell'operazione.
In questo caso lasceremo la parte iniziale dei messaggi con il colore predefinito di Bash, mentre coloriamo utilizzando i colori "BLUE" e "GREEN" per colorare rispettivamente il nome del servizio in causa e il risultato dell'operazione.
Riga 245: Riga 245:
         return 1
         return 1
     fi
     fi
    log_daemon_msg_pre "$@"


     if [ -z "${2:-}" ]; then
     if [ -z "${2:-}" ]; then
Riga 253: Riga 252:
      
      
     /bin/echo -n -e "$1:${BLUE} $2${NORMAL}"
     /bin/echo -n -e "$1:${BLUE} $2${NORMAL}"
    log_daemon_msg_post "$@"
}
}
</pre>
</pre>
Riga 275: Riga 273:


     retval=$1
     retval=$1
    log_end_msg_pre "$@"


     # Only do the fancy stuff if we have an appropriate terminal
     # Only do the fancy stuff if we have an appropriate terminal
Riga 288: Riga 284:
         /bin/echo -e " ${RED}failed!${NORMAL}"
         /bin/echo -e " ${RED}failed!${NORMAL}"
     fi
     fi
    log_end_msg_post "$@"
     return $retval
     return $retval
}
}
Riga 302: Riga 297:
<pre>
<pre>
log_action_end_msg () {
log_action_end_msg () {
    log_action_end_msg_pre "$@"
   
     if [ -z "${2:-}" ]; then
     if [ -z "${2:-}" ]; then
         end=""
         end=""
Riga 315: Riga 308:
         /bin/echo -e "${RED}failed${end}${RED}.${NORMAL}"
         /bin/echo -e "${RED}failed${end}${RED}.${NORMAL}"
     fi
     fi
    log_action_end_msg_post "$@"
}
}
</pre>
</pre>
<br>
 
: [[Utente:matt|matt]]
{{Autori
----
|Autore = [[Utente:matt|matt]]
[[Categoria:Shell]]
|Verificata_da =
[[Categoria:Tips&Tricks]]
: [[Utente:HAL 9000|HAL 9000]] 09:32, 17 giu 2017 (CEST)
|Numero_revisori = 1
}}
 
[[Categoria:Shell]][[Categoria:Boot]][[Categoria:Ottimizzazione del sistema]]
3 581

contributi