GNU/Linux >> Linux Esercitazione >  >> Linux

Come creare documenti con gli script Bash

A volte è necessario generare documenti multiriga con strutture nidificate complesse, come YAML o HTML, dall'interno degli script Bash. Puoi farlo utilizzando alcune funzioni speciali di Bash, come qui documenti . Un "qui doc" è un codice o un blocco di testo che può essere reindirizzato a uno script oa un programma interattivo. In sostanza, uno script Bash diventa un here doc quando reindirizza a un altro comando, script o programma interattivo.

Questo articolo spiega come:

  • Utilizza array, dizionari e contatori
  • Lavora con diversi tipi di commenti
  • Genera documenti YAML e HTML
  • Invia email con testo e allegati

[ Scarica ora:una guida per l'amministratore di sistema allo scripting Bash. ]

Documentazione di uno script

È importante commentare i tuoi script e puoi creare commenti a riga singola con un # oppure puoi avere commenti su più righe utilizzando la combinazione di : e < .

Ad esempio:

# Questo è un semplice commento:< 

Questa funzione della guida per il tuo script è un altro esempio utile:

#!/bin/bashSCRIPT=$(/usr/bin/nomebase $0)|| exit 100export SCRIPTfunction help_me { /usr/bin/cat< 

Il formato multiriga è piuttosto utile di per sé, specialmente quando si documentano script complessi. Tuttavia, c'è una bella svolta nell'usare qui i documenti che potresti aver visto prima:

$ /usr/bin/cat<$HOME/test_doc.txtEcco un documento su più righe che voglio salvare. Nota come posso usare variabili all'interno come HOME=$HOME.EOF 

Ecco cosa c'è scritto nel file:

$ /usr/bin/cat $HOME/test_doc.txtEcco un documento su più righe che voglio salvare. Nota come posso usare variabili all'interno come HOME=/home/josevnz. 

Ora passerò a qualcos'altro in modo che tu possa applicare questa conoscenza.

[ Per ulteriori suggerimenti su Bash, scarica questo cheat sheet sugli script di Bash Shell ]

Utilizzo di array e dizionari per generare un file YAML di inventario Ansible

Supponi di avere il seguente file CSV con un elenco di host su ogni riga contenente server o desktop:

# Elenco di host, taggato da groupmacmini2:serversraspberrypi:serversdmaf5:desktopsmac-pro-1-1:desktops 

Vuoi convertire l'elenco nel seguente file di inventario Ansible YAML:

; per la famiglia Nunez        

Vincoli extra:

  • Ogni tipo di sistema (desktop o server) avrà una variabile diversa chiamata descrizione . L'utilizzo di array e array e contatori associativi consente di soddisfare questa esigenza.
  • Lo script dovrebbe fallire se l'utente non fornisce tutti i tag corretti. Un inventario incompleto non è accettabile. Per questa esigenza, un semplice contatore aiuterà.

Questo script raggiunge l'obiettivo:

#!/bin/bash:< 

Ecco come appare l'output:

; famiglia

Un modo migliore potrebbe essere quello di creare un inventario dinamico e lasciare che il playbook di Ansible lo utilizzi. Per semplificare l'esempio, non l'ho fatto qui.

Invio di email HTML con allegati YAML

L'ultimo esempio ti mostrerà come reindirizzare un documento here a Mozilla Thunderbird (puoi fare qualcosa di simile con /usr/bin/mailx ) per creare un messaggio con un documento HTML e allegati:

#!/bin/bash:<

Ciao,

Questo è un annuncio pubblico da $USER:

                                
DataTimeVersione kernel
$ DATA$TIME Rovelli$KERNEL_VERSION
EMAIL

Quindi puoi chiamare lo script del mailer:

$ ./html_mail.sh [email protected] hosts.yaml 

Se le cose vanno come previsto, Thunderbird creerà un'e-mail come questa:

Conclusione

Per ricapitolare, hai imparato a:

  • Utilizza strutture di dati più sofisticate come array e array associativi per generare documenti
  • Utilizza i contatori per tenere traccia degli eventi
  • Utilizza qui i documenti per creare documenti YAML, istruzioni di aiuto, HTML, ecc.
  • Invia email con HTML e YAML

Bash va bene per generare documenti piccoli e semplici. Se hai a che fare con documenti grandi o complessi, è meglio usare un altro linguaggio di scripting come Python o Perl per ottenere gli stessi risultati con meno sforzo. Inoltre, non sottovalutare mai l'importanza di un vero debugger quando si ha a che fare con la creazione di documenti complessi.


Linux
  1. Come creare documenti LaTeX con Emacs

  2. Come creare un database in MySQL con MySQL Workbench

  3. Come creare script Bash utilizzando variabili esterne e script incorporati

  4. Come creare una Vm da zero con Virsh?

  5. Come creare un picco della CPU con un comando bash

Come creare un gruppo di volumi in Linux con LVM

Come creare documenti in Ubuntu

Come utilizzare il comando echo negli script Bash in Linux

Come lavorare con l'istruzione Case negli script Bash

Come creare un e-commerce con Magento

Come creare ragni web con Scrapy