2022-05-05に更新

[Linux] ランダム文字列

Linux環境にてパスワードやパスフレーズ等の設定に使うランダム文字列を生成

条件:8文字構成で数字、アルファベット小文字、大文字、記号の使用かつ類似文字を除外
数字 10文字 (0 1 2 3 4 5 6 7 8 9)
小文字 23文字 (a b c d e f g h i j k m n p r s t u v w y z)、除外 (l o q)
大文字 14文字 (A B D E F G H J L M N Q R T)、除外 (C I K O S U V W X Y Z)
記号 4文字 (# ? _ !)

cat /dev/urandom | tr -dc 'a-kmnpr-zABD-HJL-NQRPT0-9#?_!' | fold -w 8 | head -n 300 | grep -v '^[#?_!]' | grep '[#?_!]' | grep [A-Z] | grep [a-z] | grep [0-9] | grep -vE '(.)\1' | uniq | shuf -n 1

省略版 記号と数字のチェックすれば問題なさそう

cat /dev/urandom | tr -dc 'a-kmnpr-zABD-HJL-NQRPT0-9#?_!' | fold -w 8 | head -n 300 | grep -v '^[#?_!]' | grep '[#?_!]' | grep [0-9] | grep -vE '(.)\1' | shuf -n 1

cat /dev/urandom ランダムな文字列を生成
tr -dc 'a-kmnpr-zABD-HJL-NQRPT0-9#?_!' 条件の含めたい文字
fold -w 8 8文字
head -n 300 行頭から300文字
grep -v '^[#?_!]' 先頭記号の文字列を除く
grep '[#?_!]' | grep [A-Z] | grep [a-z] 条件に合致しているか絞り込み
grep -vE '(.)\1' 繰り返し文字を除く
uniq 念のため重複行の取り除き、後のコマンドで含まれているのでいらない
shuf -n 1 ランダムの1行を出力

実行例

$ cat /dev/urandom | tr -dc 'a-kmnpr-zABD-HJL-NQRPT0-9#?_!' | fold -w 8 | head -n 300 | grep -v '^[#?_!]' | grep '[#?_!]' | grep [0-9] | grep -vE '(.)\1' | shuf -n 1
9eD?8aiG
ツイッターでシェア
みんなに共有、忘れないようにメモ

dsta50

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント