システム管理者は、日常業務を簡単に完了し、他の重要なことに集中できるように、ほとんどのタスクを自動化することを常に考えています。そのようなタスクの1つは、Unixアカウントの作成です。ここでは、シェルスクリプトを使用してUnixアカウントを作成する方法を説明します。シェルスクリプトを作成するこの旅では、タスクは単純に見えますが、多くのことを学ぶことができます!
1。読みやすくするために、スクリプト作成中は標準のガイドラインに従ってください
C、C ++、JAVAなどの他のほとんどのプログラミング言語には、コーディング中に従う一連の「ベストプラクティス」があります。ただし、その名前が示すように、シェルスクリプトは、特別なランタイム環境向けに短時間で作成されたプログラムの一種です。クイックタイムとは、ルールに従わないことを意味します。ベストプラクティスに従うと、スクリプトが読みやすく、再利用可能になり、保守しやすくなります。
したがって、このスクリプトでは、関数を使用してコードをモジュール化します。以下の関数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; }
この使用法関数は、スクリプトの実行や間違った引数などでヘルプが必要な場合に呼び出されます。
2。シェルスクリプトで引数を受け入れる方法
シェルスクリプトでは、引数の受け入れは次のように行われます:
$0 - Script Name $1 - First argument $2 - Second argument $# - No. of arguments $@ - All arguments
例:
Tue Oct 29>$./account_creation.sh username password
上記の例では、$ 0はaccount_creation.sh、$ 1はユーザー名、$2はパスワードです。 $#は2を返し、$@はすべての引数を返します。
3。シェルスクリプトで「Getopt」を使用するコマンドラインオプション
コマンドラインオプションを提供することは、スクリプトをユーザーに提示するためのより良い方法です。短いコマンドラインオプションと長いコマンドラインオプションの両方をサポートするスクリプトを作成できます。例:ヘルプメッセージを表示するには、「-h」または「-help」オプションのいずれかを使用できます。一般的な規則では、長いオプションの前にはダブルハッシュが付き、小さいオプションの前にはダッシュが1つあります。以下はコードです:
while getopts ":h:u:p:" OPTION do case "$OPTION" in h) usage ;; u) USERNAME=${OPTARG} ;; p) PASSWORD=${OPTARG} ;; \?) usage ;; esac done
getoptsコマンドは、パラメーターのリストからオプションとオプション引数を取得するKorn/POSIXシェル組み込みコマンドです。 getoptsについて詳しくは、こちらをご覧ください。単純に各コマンドラインオプションでは、ループが実行され、各オプションに対応する値が割り当てられた変数に格納されます。以下は、渡されたパラメータが空かどうかを確認するためのコードスニペットです:
shift $((OPTIND-1)) if [ -z "${USERNAME}" ] || [ -z "${PASSWORD}" ]; then usage fi
4。シェルスクリプトからLinuxコマンドを実行する方法
ここでuseradd アカウントの作成に使用されるLinuxコマンドです。
/usr/sbin/useradd -m ${USERNAME}
ここで、ユーザーがすでに存在する場合、下の画像に示されているstderrとしていくつかの警告が表示される可能性があることに注意する必要があります:
5。 stdoutとstderrを無視/ログファイルにリダイレクトする方法
Bashおよびその他の最新のシェルは、I/Oリダイレクト機能を提供します。 Linuxの標準I/Oストリーム番号は次のとおりです:
処理 | 名前 | 説明 |
0 | stdin | 標準入力 |
1 | stdout | 標準出力 |
2 | stderr | 標準エラー |
a。 stderrストリームをファイルにリダイレクトする:
$script 2> error.log
b。 stdoutストリームをファイルにリダイレクトする:
$script 1> output.log
c。 stderrとstdoutの両方をファイルにリダイレクトします:
$script &>file.out
これらのstderrおよびstdoutメッセージを無視したい場合は、ファイルではなく/ dev/nullにリダイレクトしてください。
$script 2>/dev/null
6。シェルスクリプトでコマンドが正常に実行されたことを確認する方法
$?最後に実行されたコマンドまたはスクリプトの戻りコード(ステータスコード)です。 0 ==成功、その他の数字は失敗を意味します
7。シェルスクリプトのif/elseなどの条件文
ほとんどのプログラミング言語とスクリプト言語には、ある種のif / else式があり、シェルスクリプトもそうです。次の表は、許可されるさまざまな式を示しています。
-eq | 等しい |
-ne | 等しくない |
-lt | 未満 |
-le | 以下 |
-gt | より大きい |
-ge | 以上 |
注:他のほとんどの言語とは異なり、 if を使用する場合は、スペースが非常に重要です。 シェルスクリプトのステートメント。
以下のコードは最後のコマンドのステータスコードをチェックし、成功するとパスワードを作成するためにさらに移動します。パスワードが正常に設定されると、アクティビティが正常に完了するように端末にメッセージが表示されます。
# 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をエコーします。
完全なスクリプト:ダウンロードリンク
Linuxに関する他の興味深い記事をチェックしてください: