はじめに
このプロジェクトでは、特定のセキュリティ要件を満たすランダムなパスワード生成スクリプトを作成する方法を学びます。このスクリプトは、少なくとも 1 つの数字、1 つの大文字、1 つの小文字、および ><+-{}:.&; のセットからの 1 つの特殊文字を含む 12 文字のパスワードを生成します。このプロジェクトは、スクリプト作成とランダムデータの操作に関する実践的な経験を提供します。
👀 プレビュー
$ cd /home/labex/project
$ sh genpass.sh
## 例
2Dsxw9+xS:27
🎯 タスク
このプロジェクトでは、次のことを行います。
- プロジェクト環境をセットアップし、必要なスクリプトファイルを作成します。
- 指定された複雑さ要件を満たすランダムなパスワードを生成するロジックを実装します。
- パスワード生成スクリプトをテストして、正しく機能することを確認します。
🏆 成果
このプロジェクトを完了すると、次のことができるようになります。
- ランダムなパスワード生成スクリプトの作成プロセスを理解する。
- 特定の文字型要件を満たすパスワード生成アルゴリズムを実装する。
- 生成されたパスワードをテストして検証し、望ましい基準を満たしていることを確認する。
プロジェクト環境をセットアップする
このステップでは、作業環境を準備し、パスワード生成スクリプト用の必要なファイルを作成します。
ターミナルを開き、
cdコマンドを使用して/home/labex/projectディレクトリに移動します。cd /home/labex/projecttouchコマンドを使用して、新しいファイルgenpass.shを作成します。これがパスワード生成スクリプトを記述するファイルになります。touch genpass.sh好きなテキストエディタ(
nano、vimなど)を使ってgenpass.shファイルを開きます。ファイルの最初に次のシャバン行を追加します。#!/bin/zsh ## ランダムなパスワード生成 ## このスクリプトは指定された要件を満たすランダムなパスワードを生成します。この行は、システムにスクリプトを実行するために zsh シェルを使用するように指示します。シャバン行の後のコメントは、スクリプトの概要を説明しています。
パスワード生成ロジックを実装する
このステップでは、genpass.sh スクリプトにコアロジックを追加して、複雑さ要件を満たすランダムなパスワードを生成します。
genpass.shファイルの中に、次の関数を追加してパスワードを生成します。## ランダムなパスワードを生成する関数 generate_password() { local length=12 local password='' ## 特殊文字 local special_chars='><+-{}:.&;' local special_char="${special_chars:$RANDOM%${#special_chars}:1}" password+="$special_char" ## 数字 local digits='0123456789' local digit="${digits:$RANDOM%${#digits}:1}" password+="$digit" ## 大文字 local upper_case='ABCDEFGHIJKLMNOPQRSTUVWXYZ' local upper="${upper_case:$RANDOM%${#upper_case}:1}" password+="$upper" ## 小文字 local lower_case='abcdefghijklmnopqrstuvwxyz' local lower="${lower_case:$RANDOM%${#lower_case}:1}" password+="$lower" ## 残りの文字 local remaining_length=$((length - 4)) local characters='><+-{}:.&;0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' local num_characters=${#characters} for ((i = 0; i < remaining_length; i++)); do local random_char="${characters:$RANDOM%$num_characters:1}" password+="$random_char" done ## パスワードの文字の順序をシャッフルする password=$(echo "$password" | fold -w1 | shuf | tr -d '\n') echo "$password" }この関数は以下のように機能します。
- 基本要件を満たすために、1 つの特殊文字、1 つの数字、1 つの大文字、1 つの小文字でパスワードを初期化します。
- 望ましい 12 文字の長さに達するための残りの文字数を計算します。
- 数字、文字(大文字と小文字両方)、特殊文字のプールから残りの文字をランダムに選択します。
- 特定の文字が常に先頭にならないようにパスワードをシャッフルします。
genpass.shファイルの末尾に次のコードを追加します。このスクリプトのこの部分はgenerate_password関数を呼び出し、生成されたパスワードをコンソールに出力します。## パスワードを生成して出力する generate_password
パスワード生成器をテストする
このステップでは、genpass.sh スクリプトをテストして、すべての要件を満たすパスワードが生成されることを確認します。
テキストエディタで
genpass.shファイルを保存します。ターミナルで、
chmodコマンドを使用してスクリプトを実行可能にします。chmod +x genpass.shこのコマンドは、ファイルに実行権限を追加し、プログラムとして実行できるようにします。
次のコマンドを使用してスクリプトを実行します。
sh genpass.shスクリプトはコンソールにランダムな 12 文字のパスワードを出力するはずです。出力には少なくとも 1 つの特殊文字、1 つの数字、1 つの大文字、1 つの小文字が含まれている必要があります。
## 例 2Dsxw9+xS:27スクリプトをもう何度か実行します。毎回、異なるパスワードが生成されるはずです。これにより、パスワード生成器のランダム性が正しく機能することが確認されます。
おめでとうございます!指定された複雑さ要件を満たすランダムなパスワード生成器を正常に実装してテストしました。
まとめ
おめでとうございます!このプロジェクトを完了し、ランダムなパスワード生成器スクリプトを作成しました。これで、将来のスクリプト作成プロジェクトの基礎を築くことができます。 LabEx のさまざまな実験を通じてさらに練習することで、技術力をさらに向上させることができます。



