GNU/Linux >> Znalost Linux >  >> Linux

[Linux] :7 věcí, které se naučíte, když začnete psát jednoduchý skript Shell

Správce systému bude vždy myslet na automatizaci většiny svých úkolů, aby byly rutinní úlohy snadno dokončeny a on se mohl soustředit na některé další důležité věci. Jedním z takových úkolů je vytvoření unixového účtu. Zde uvidíme, jak můžeme vytvořit unixový účet pomocí shell skriptu. Na této cestě vytváření shell skriptu, i když se úkol zdá být jednoduchý, se naučíte mnoho věcí!

1. Dodržujte standardní pokyny během skriptování pro lepší čitelnost

Většina ostatních programovacích jazyků jako C, C++, JAVA má sadu „Best Practices“, které by se měly dodržovat při kódování. Jak však název napovídá, skriptování shellu je druh programů napsaných pro speciální běhové prostředí v rychlém čase Quick time znamená velmi méně dodržování pravidel. Dodržováním doporučených postupů bude váš skript čitelnější, znovu použitelný a udržovatelný.

V tomto skriptu tedy budeme používat funkce k modularizaci kódu. Níže uvedený fragment kódu pro funkci use() :

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;
}

Tato funkce použití je volána vždy, když je vyžadována pomoc při provádění skriptu nebo pro nesprávné argumenty atd.,

2. Jak přijímat argumenty ve skriptu shell

Ve skriptu shellu se přijímání argumentů provádí následovně:

$0 - Script Name
$1 - First argument
$2 - Second argument
$# - No. of arguments
$@ - All arguments

Příklad:

Tue Oct 29>$./account_creation.sh username password

Ve výše uvedeném příkladu $0 je account_creation.sh, $1 je uživatelské jméno a $2 je heslo. $# vrátí 2 a $@ vrátí všechny argumenty.

3. Možnosti příkazového řádku pomocí „Getopt“ ve skriptu shell

Poskytování možností příkazového řádku je lepší způsob prezentace skriptu uživateli. Můžete psát skripty pro podporu krátkých i dlouhých voleb příkazového řádku. Například:pro zobrazení zprávy nápovědy můžete použít volbu „-h“ nebo „–help“. Typickou konvencí je, že dlouhým opcím předchází dvojitý hash a malým možnostem jednoduchá pomlčka. Níže je kód:

while getopts ":h:u:p:" OPTION
do
        case "$OPTION" in
        h)
                usage
                ;;
        u)
                USERNAME=${OPTARG}
                ;;
        p)
                PASSWORD=${OPTARG}
                ;;
        \?)
                usage
                ;;
        esac
done

Příkaz getopts je vestavěný příkaz prostředí Korn/POSIX, který načítá volby a argumenty voleb ze seznamu parametrů. Přečtěte si více o getoptech zde. Jednoduše řečeno, pro každou možnost příkazového řádku se provede cyklus a odpovídající hodnota pro každou možnost se uloží do přiřazených proměnných. Níže je uveden fragment kódu pro kontrolu, zda jsou předané parametry prázdné:

shift $((OPTIND-1))
if [ -z "${USERNAME}" ] || [ -z "${PASSWORD}" ]; then
    usage
fi

4. Jak spouštět příkazy Linuxu ze skriptu shell

Zde useradd je linuxový příkaz používaný k vytvoření účtu.

/usr/sbin/useradd -m ${USERNAME}

Zde si musíte všimnout, že pokud uživatel již existuje, můžete dostat několik varování jako stderr, které je zobrazeno na obrázku níže:

5. Jak ignorovat/přesměrovat stdout a stderr do log-file

Bash a další moderní prostředí poskytují možnost přesměrování I/O. Standardní čísla I/O streamů pro Linux jsou následující:

Pojistka Jméno Popis
0 stdin Standardní vstup
1 stdout Standardní výstup
2 stderr Standardní chyba

A. Přesměrování proudu stderr do souboru:

$script 2> error.log

b. Přesměrování proudu stdout do souboru :

$script 1> output.log

C. Přesměrujte stderr i stdout do souboru :

$script  &>file.out

Pokud chcete tyto zprávy stderr a stdout prostě ignorovat, přesměrujte je na /dev/null místo do souboru.

$script 2>/dev/null

6. Jak zkontrolovat úspěšné provedení příkazu v shell skriptu

$? je návratový kód (stavový kód) posledního provedeného příkazu nebo skriptu. 0 ==úspěch, jakékoli jiné číslo znamená neúspěch

7. Podmíněné příkazy jako if/else ve skriptu shell

Většina programovacích a skriptovacích jazyků má nějaký druh výrazu if/else, stejně jako skriptování v shellu. Následující tabulka ukazuje různé povolené výrazy.

-eq rovná se
-ne není rovno
-lt méně než
-le menší nebo rovno
-gt větší než
-ge větší než nebo rovno

Poznámka:Na rozdíl od většiny ostatních jazyků jsou při použití if velmi důležité mezery příkaz ve skriptování shellu.

Níže uvedený kód kontroluje stavový kód posledního příkazu a po úspěchu se posouvá dále k vytvoření hesla. Po úspěšném nastavení hesla vypíšeme na terminál zprávu o úspěšném dokončení aktivity.

# 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

Úplný skript:Odkaz ke stažení

Podívejte se na naše další zajímavé články o LINUXu:

Rychlé klávesové zkratky prostředí Bash – tipy pro Linux

8 Funny linuxových příkazů – bude se vám to líbit!

Doporučené postupy při spouštění příkazu rm -rf na linuxu

Příkazy správce systému Linux

Jak přidat ukazatel průběhu pro kopírování a přesouvání příkazů v Linuxu?

Jak synchronizovat čas serveru Linux s časovým serverem sítě

Jak nakonfigurovat yum pro použití úložiště CentOS v počítači RHEL

Nejlepší nástroje pro obnovu dat [Windows, Linux, DOS, MAC OS X]


Linux
  1. Určit prostředí ve skriptu za běhu?

  2. Určení cesty ke zdrojovému skriptu Shell?

  3. Potřebujete Shell pro Scp?

  1. Význam $? Ve skriptu Shell?

  2. Shell Script pro tisk pyramidy hvězd

  3. Proč potřebujete umístit #!/bin/bash na začátek souboru skriptu?

  1. Může být soubor .sh malware?

  2. Startovací skript postgresql Systemd

  3. Jednoduchý způsob, jak restartovat havarované procesy?