BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

このBashスクリプトを使用してランダムなパスワードを生成する

定期的に、新しいパスワードを考え出す必要があります。その中には、他のパスワードよりも安全である必要があるものもあります。新しいログインを作成する必要があるとき、私の心はしばしば空白を描くように見えます、そしてこの短いBashスクリプトはその空白を埋めます。完全な開示:このスクリプトのほとんどがどこかに投稿されているのを見つけ、マイナーな変更を加えました。

#!/usr/bin/env sh
echo 'Generating 12-character passwords'
for ((n=0;n<12;n++))
do dd if=/dev/urandom count=1 2> /dev/null | uuencode -m - | sed -ne 2p | cut -c-12
done

これがどのように機能するかについての詳細はすべてわかりませんが、少し調査と実験を行いました。スクリプトの「肉」は、 do ddで始まる行にあります 。 ddを見たことがあるかもしれません あるディスクを別のディスクにコピーするために使用されますが、この場合、 dev / urandomを使用してランダムな文字の1つのブロックを生成するために使用されます ddからのフィードバックメッセージ 削除された後、文字は uuencodeに渡されます 、すべてが印刷可能になるように(つまり、制御文字がないように)文字を変換することがその仕事です。

uuencodeコマンドは、sharutilsパッケージをインストールすることで取得できます。

sedの仕事 文字が大文字と小文字が混在するように、さらに変換されているようです。最後に、カット 12文字を切り取って、12文字のパスワードで終了します。 for ループは12回実行されるため、12個のパスワードを取得します。

Generating 12-character passwords 
8WMKHeXeYsND
X+V3jWOuBWwp
fSk6inI+LfYP
hIPndcBOSh7m
bb/w9mx8OlHv
hdIOibUaMt3Y
wl//CobIG5bR
dih0qQQMJiXw
BIN2QfNA4jCe
DF0c8Auz1qL4
RM8MMq/D8C8H
rZIG5hbghcMy

この出力例は、かなり良い文字の寄せ集めを示しています。注意すべき点の1つは、英数字以外の文字は /のみであるということです。 および+

新しいパスワードが必要な場合は、この出力を調べて、自分に「アピール」するパスワードを探します。頻繁に使用するパスワードの場合は、最終的に覚えられると思うパスワードにしたいと思います。

これらを文字通りそのまま使用する理由はありません。必要に応じて文字を追加または変更できます。私は主に8文字のパスワードを使用します。一部の場所では、少なくとも1つの小文字、1つの大文字、1つの数字、1つの記号など、特定の要素を含むパスワードが必要です。

パスワードが気に入らない場合は、スクリプトを再度実行して別の12を生成します。誰かが dev / urandomとコメントする可能性があります。 疑似乱数を生成するだけですが、このスクリプトは確かに私が自分で行うよりもはるかに優れた仕事をします。


  1. この単純なBashスクリプトを使用して、自宅で両面ドキュメントを印刷します

    自宅にレーザープリンターがあります。このHewlettPackardLaserJet Pro CP1525nwカラープリンターは古いモデルですが、確実にカラーで印刷できる優れた主力製品です。数年前に、RaspberryPiをプリントサーバーとして使用してホームネットワークに配置しました。 LaserJetは、私のホームオフィスに追加された素晴らしい機能です。昨年会社を立ち上げて以来、この小さなレーザープリンターを利用して、クライアントの会議、ワークショップ、トレーニングセッション用の配布物やその他の資料を印刷してきました。 このプリンターの唯一の不満は、片面のみを印刷することです。両面

  2. 5 つの実用的な例を含む Bash スクリプト入門チュートリアル

    進行中の Unix Sed および Unix Awk シリーズと同様に、Bash スクリプトに関するいくつかの記事を投稿します。実用的な例ですべての bash スクリプト テクニックをカバーします。 シェルは、ユーザー コマンドを解釈するプログラムです。コマンドは、ユーザーが直接入力するか、シェル スクリプトと呼ばれるファイルから読み取るかのいずれかです。ユーザーからの入力を直接読み取る場合、シェルは対話型シェルとして呼び出されます。 シェルは、ファイルからコマンドを読み取って実行するときに、非対話型シェルとして呼び出されます。この場合、シェルはスクリプト ファイルの各行を上から下に読み取