Un amministratore di sistema penserà sempre di automatizzare la maggior parte delle sue attività in modo che i lavori di routine vengano completati facilmente e possa concentrarsi su altre cose critiche. Una di queste attività è la creazione di account Unix. Qui vedremo come possiamo creare un account Unix usando lo script della shell. In questo viaggio di creazione di script di shell, anche se il compito sembra essere semplice, imparerai molte cose!
1. Segui le linee guida standard durante lo scripting per una migliore leggibilità
La maggior parte degli altri linguaggi di programmazione come C, C++, JAVA ha una serie di "Best Practices" che sarebbero seguite durante la codifica. Tuttavia, come suggerisce il nome, lo scripting della shell è una specie di programma scritto per uno speciale ambiente di runtime in tempi rapidi Quick time significa molto meno seguire le regole. Seguire le best practice renderà il tuo script più leggibile, riutilizzabile e gestibile.
Quindi in questo script utilizzeremo le funzioni per modularizzare il codice. Sotto il frammento di codice per la funzione usage() :
usage() { echo "Usage: $PROGNAME [options] Options: -u username, Provide name for new user account creation -p password, Provide complex password -h help, display this help message and exit " exit 1; }
Questa funzione di utilizzo viene chiamata ogni volta che è richiesto un aiuto nell'esecuzione dello script o per argomenti errati ecc.,
2. Come accettare argomenti in uno script di shell
In uno script di shell, l'accettazione degli argomenti avviene come segue:
$0 - Script Name $1 - First argument $2 - Second argument $# - No. of arguments $@ - All arguments
Es:
Tue Oct 29>$./account_creation.sh username password
Nell'esempio precedente $0 è account_creation.sh, $1 è il nome utente e $2 è la password. $# restituirà 2 e $@ restituirà tutti gli argomenti.
3. Opzioni della riga di comando usando "Getopt" nello script della shell
Fornire opzioni della riga di comando è un modo migliore per presentare il tuo script all'utente. È possibile scrivere script per supportare le opzioni della riga di comando sia brevi che lunghe. Ad esempio:per visualizzare un messaggio di aiuto, è possibile utilizzare l'opzione “-h” o “–help”. Una convenzione tipica è che le opzioni lunghe sono precedute da un doppio hash e quelle piccole da un trattino singolo. Di seguito il codice :
while getopts ":h:u:p:" OPTION do case "$OPTION" in h) usage ;; u) USERNAME=${OPTARG} ;; p) PASSWORD=${OPTARG} ;; \?) usage ;; esac done
Il comando getopts è un comando integrato Korn/POSIX Shell che recupera opzioni e argomenti di opzioni da un elenco di parametri. Leggi di più su getopts qui. In modo semplice, per ciascuna opzione della riga di comando, il ciclo viene eseguito e il valore corrispondente per ciascuna opzione viene memorizzato nelle variabili assegnate. Di seguito è riportato lo snippet di codice per verificare se i parametri passati sono vuoti:
shift $((OPTIND-1)) if [ -z "${USERNAME}" ] || [ -z "${PASSWORD}" ]; then usage fi
4. Come eseguire comandi Linux dallo script della shell
Qui useradd è un comando Linux utilizzato per creare un account.
/usr/sbin/useradd -m ${USERNAME}
Qui devi notare che se l'utente esiste già, potresti ricevere alcuni avvisi come stderr che è mostrato nell'immagine qui sotto:
5. Come ignorare/reindirizzare stdout e stderr al file di log
Bash e altre moderne shell forniscono funzionalità di reindirizzamento I/O. I numeri di flusso di I/O standard di Linux sono i seguenti:
Maniglia | Nome | Descrizione |
0 | stdin | Input standard |
1 | uscita standard | Uscita standard |
2 | stderr | Errore standard |
un. Reindirizzamento del flusso stderr a un file :
$script 2> error.log
b. Reindirizzamento del flusso stdout a un file :
$script 1> output.log
c. Reindirizza sia stderr che stdout in un file :
$script &>file.out
Se vuoi semplicemente ignorare questi messaggi stderr e stdout, reindirizzalo a /dev/null anziché a file.
$script 2>/dev/null
6. Come verificare la corretta esecuzione del comando in uno script di shell
$? è il codice di ritorno (codice di stato) dell'ultimo comando o script eseguito. 0 ==successo, qualsiasi altro numero indica un fallimento
7. Dichiarazioni condizionali come if/else nello script della shell
La maggior parte dei linguaggi di programmazione e di scripting ha una sorta di espressione if/else, così come lo scripting della shell. La tabella seguente mostra le diverse espressioni consentite.
-eq | uguale a |
-ne | non uguale a |
-lt | meno di |
-le | minore o uguale a |
-gt | maggiore di |
-ge | maggiore o uguale a |
Nota:a differenza della maggior parte delle altre lingue, gli spazi sono molto importanti quando si utilizza un se istruzione nello scripting della shell.
Sotto il codice controlla il codice di stato dell'ultimo comando e in caso di successo si sposta ulteriormente per creare la password. Dopo aver impostato correttamente la password, inseriremo un messaggio sul terminale per il completamento con successo dell'attività.
# Create User Account /usr/sbin/useradd -m ${USERNAME} 2>/dev/null if [ $? -eq "0" ]; then echo -e ${PASSWORD} | /usr/bin/passwd ${USERNAME} --stdin >/dev/null if [ $? -eq "0" ]; then echo "User ${USERNAME} created sucessfully" fi fi
Script completo:link per il download
Dai un'occhiata ai nostri altri articoli interessanti su LINUX :