GNU/Linux >> Linux Esercitazione >  >> Linux

[Linux]:7 cose che imparerai iniziando a scrivere un semplice script Shell

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 :

Scorciatoie rapide da tastiera di Bash shell - Suggerimenti Linux

8 divertenti comandi Linux:lo adorerai!

Best practice durante l'esecuzione del comando rm -rf su linux

Comandi dell'amministratore di sistema Linux

Come aggiungere una barra di avanzamento per copiare e spostare i comandi in Linux?

Come sincronizzare l'ora del server Linux con Network Time Server

Come configurare yum per utilizzare il repository CentOS nella macchina RHEL

I migliori strumenti per recuperare i dati [Windows, Linux, DOS, MAC OS X]


Linux
  1. Come ottenere il nome della distribuzione e il numero di versione in un semplice script di shell?

  2. Timeout in uno script di shell?

  3. Shell Script per stampare la piramide di stelle

  4. Esecuzione di script di shell in parallelo

  5. Directory corrente dello script Shell?

Come eseguire un comando in uno script della shell?

Come si esegue uno script all'accesso in *nix?

Perché è necessario inserire #!/bin/bash all'inizio di un file di script?

Script di traslitterazione per shell linux

Come posso ottenere il nome della distribuzione e il numero di versione in un semplice script di shell?

Un modo semplice per riavviare i processi bloccati?