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: